倔强青铜铜 发表于 2023-12-13 16:05:13

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

P=zeros(npv+npq,1);
Q=zeros(npq+npq,1);
for i=
    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)));
为啥呀?我这也不算矩阵相乘吧,不是用矩阵里的元素做运算吗,为什么也会报矩阵乘法的错

FishC 发表于 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 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: matlab里为什么我索引矩阵的元素进行运算会报错维度不一致