运行时用于矩阵乘法的维度不正确
时间: 2023-11-27 17:29:53 浏览: 113
非常抱歉,我再次检查了代码,发现还存在一个错误。第38行的矩阵乘法中,应该将 B 的转置作为第二个矩阵进行乘法,才能保证维度匹配,即:
```
U = u + L1*[e1(k);e2(k);e3(k)] + L2*[ce1(k);ce2(k);ce3(k)];
```
改正后,代码应该可以正确运行了。再次感谢你的指正。
相关问题
该代码矩阵乘法的维度不正确
在代码中有多处的矩阵乘法的维度不匹配,需要进行修改。
在第 30 行,需要将 `L1` 和 `L2` 的定义修改为:
```
L1 = [theta(1),theta(2),0;0,0,theta(3)];
L2 = [theta(4); theta(5); 0; 0; 0; theta(6)];
```
在第 36 行,需要将 `U` 的计算修改为:
```
U = u+L1*[e1(k);e2(k);e3(k)]+L2*[ce1(k);ce2(k);ce3(k);0;0;0];
```
在第 37 行,需要将 `u1(k)` 和 `u2(k)` 的计算修改为:
```
U1U2 = U(1:2);
u1(k) = U1U2(1);
u2(k) = U1U2(2);
```
在第 40 行,需要将 `dx` 的定义修改为:
```
dx = [B*u; 0; 0; 0; 0; 0];
```
在第 41 行,需要将 `dtheta` 的计算修改为:
```
dtheta = -0.5*sign(cond)*L1*([e1(k);e2(k);e3(k)]'*B' - x(1:3)')*x;
```
这些修改应该可以解决矩阵乘法的维度不匹配问题。
matlab矩阵乘法维度
Matlab矩阵乘法的维度要求如下:
1. 两个矩阵相乘,要求矩阵A的列数与矩阵B的行数相等。换句话说,如果矩阵A的维度是m×n,矩阵B的维度是n×p,那么矩阵乘法的结果矩阵C的维度就是m×p。
2. 如果乘法操作中出现矩阵维度不一致的错误,需要仔细检查矩阵的定义和运算过程中是否存在参数名重复或其他错误。有时候可能会忽略到后面部分出现的自己定义的参数矩阵,导致出现错误。
综上所述,Matlab矩阵乘法的维度要求是保证矩阵A的列数与矩阵B的行数相等。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [matlab做矩阵运算时,却出现错误使用 - ,*等, 矩阵维度必须一致的错误](https://blog.csdn.net/yjwdishou/article/details/112442009)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]