鱼C论坛

 找回密码
 立即注册
查看: 1395|回复: 1

matlab里为什么我索引矩阵的元素进行运算会报错维度不一致

[复制链接]
发表于 2023-12-13 16:05:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
P=zeros(npv+npq,1);
Q=zeros(npq+npq,1);
for i=[pv;pq]
    for j=1:nb
    P(i)=Va(j)*(YG(i,j)*cos(Vm(i)-Vm(j))+YB(i,j)*sin(Vm(i)-Vm(j)));
    % Q(i)=Va(j)*(YG(i,j)*sin(Vm(i)-Vm(j))-YB(i,j)*cos(Vm(i)-Vm(j)));
    end
    P(i)=Va(i)*P(i);
    % Q(i)=Va(i)*Q(i);
end
然后他就报错了
错误使用  *
用于矩阵乘法的维度不正确。请检查并确保第一个矩阵中的列数与第二个矩阵中的行数匹配。要单独对矩阵的每个元素进行运算,请使用 TIMES (.*)执行按元素相乘。

出错 test (第 40 行)
    P(i)=Va(j)*(YG(i,j)*cos(Vm(i)-Vm(j))+YB(i,j)*sin(Vm(i)-Vm(j)));

为啥呀?我这也不算矩阵相乘吧,不是用矩阵里的元素做运算吗,为什么也会报矩阵乘法的错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-13 16:05:36 | 显示全部楼层
在MATLAB中,使用*运算符进行元素级别的乘法是不允许的,因为它表示矩阵乘法。如果您想要对两个矩阵的对应元素进行乘法运算,应该使用.*运算符。

在您的代码中,这一行是错误的:
P(i)=Va(j)*(YG(i,j)*cos(Vm(i)-Vm(j))+YB(i,j)*sin(Vm(i)-Vm(j)));

正确的写法应该是:
P(i)=Va(j)*(YG(i,j)*cos(Vm(i)-Vm(j))+YB(i,j)*sin(Vm(i)-Vm(j)));

同样的问题也出现在下面的这行代码中:
P(i)=Va(i)*P(i);

正确的写法应该是:
P(i)=Va(i)*P(i);

通过使用.*运算符,您可以实现对矩阵的每个元素进行运算而不会引发维度不匹配的错误。希望这可以帮助到您!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 23:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表