Matlab 错误:矩阵尺寸必须与绘图一致
我的“新爱人”有问题,matlab:我写了一个函数,用trapz方法计算积分:`Matlab 错误:矩阵尺寸必须与绘图一致,matlab,debugging,matrix,plot,dimensions,Matlab,Debugging,Matrix,Plot,Dimensions,我的“新爱人”有问题,matlab:我写了一个函数,用trapz方法计算积分:` function [L]=bogenlaenge_innen(schwingungen) R = 1500; %Ablegeradius OA = 1; %Amplitude S = schwingungen; %Schwingungszahl B = 3.175; %Tapebreite phi = 0:2.*pi./10000:2.*p
function [L]=bogenlaenge_innen(schwingungen)
R = 1500; %Ablegeradius
OA = 1; %Amplitude
S = schwingungen; %Schwingungszahl
B = 3.175; %Tapebreite
phi = 0:2.*pi./10000:2.*pi;
BL = sqrt((R-B).^2+2.*(R-B).*OA.*sin(S.*phi)+OA.^2.*(sin(S.*phi)).^2+OA.^2.*S.^2.*(cos(S.*phi)).^2);
L = trapz(phi,BL)`
当我在命令窗口中用一个特定的数字启动它时,它工作得很好。现在我想画几个S的“L”值
我在一个新的*.m文件中执行了以下操作:
W=(0:1:1500);
T=bogenlaenge_innen(W);
绘图(W,T)
这就是:
使用时出错。*
矩阵尺寸必须一致
怎么了?它只是某个地方的一个点吗?我现在使用matlab已经是第二天了,所以请耐心等待……)提前非常感谢
PS:只需忽略代码的德语部分,这并不重要:)错误很可能是因为您这样做的缘故,
schwingungen
中的元素数,即代码中的W
必须等于phi
中的元素数。由于size(W)
给出的结果与size(0:2.*pi./10000:2.*pi)
不同,因此会出现错误
*
的工作方式是将两个矩阵的每个对应元素相乘,前提是它们要么具有相同的维度,要么其中一个是标量。因此,当schwingungen是标量时,您的代码可以工作,但当它是向量时,它的元素数可能与您硬编码的phi不同
对您来说,最简单的操作过程(不一定是最复杂的)是循环使用S
的不同值:
W = (0:1:1500);
T = zeros(size(W); %Preallocate for speed)
for ii = 1:length(W)
T(ii) = bogenlaenge_innen(W(ii));
end
plot(W,T)
在您的代码中,表达式
sin(S.*phi)
中的数组S
和phi
应具有相同的大小,或者其中一个数组应为常量,以便代码工作在您的函数中将phi定义为10001个元素的向量。
在同一个函数中,您需要S.*phi,因此如果S的长度与phi不同,您将得到“尺寸必须一致”错误。
在调用函数时,使用的是长度为1501的向量,因此存在错误
关于你应该看看T的大小