Matlab 错误:矩阵尺寸必须与绘图一致

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

我的“新爱人”有问题,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.*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的大小