matlab运行时出现问题In an assignment A(I) = B, the number of elements in B and I must be the same.

2025-02-27 01:54:52
推荐回答(2个)
回答1:

for n=1:length(sitax)

    B=[exp(-1j*2*pi/lmda*[0:N-1]*d*sin(sitax(n)))]';  %这里如果d是一个数,后面就都不用改,但这d是一个数列,后面的大小就出问题了

    pmu{n}=B'*B*inv(B'*en*B);    %这里要存的内容是个8*8的矩阵,因此把被存的位置设为cell

end

pmu=cell2mat(pmu);  %将变量由cell转为mat,下一步才能操作

pmusic=abs(pmu);   


 %但这样一来后面的图画不出来,估计是B的计算那一步或相关的地方有问题


如果将d=lmda/2;代入运行后的结果如图,你参考下


在出错那一步设置断点,运行暂停后把光标停留在需检查的变量名上查看当前值是否正确,不正确的话在将断点前移检查前面的步骤;当前的值都没问题的话,把接下来出错的一步在命令框中试算,按猜测+反复试+理解+查HELP去改。(不知道你会不会DEBUG,所以啰嗦一下,希望对你有帮助!)

回答2:

矩阵pmu的维数你是如何定义的?错误的原因明显是B'*B*inv(B'*en*B)运算后的结果与pmu定义的维数不匹配。