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

时间:2013-06-06 13:51:50

标签: 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.*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); plot(W,T)

它就是:

  

使用时出错。*   矩阵维度必须一致。

有什么问题?它只是一个点?我现在第二天使用matlab,所以请耐心等待;;)提前谢谢你!

PS:只是忽略代码的德语部分,它并不重要:)

3 个答案:

答案 0 :(得分:0)

错误的可能性很大,因为您已将其设置为schwingungen中的元素数量,即代码中的W,必须等于phi中的元素数量。由于size(W)会为您提供与size(0:2.*pi./10000:2.*pi)不同的结果,因此您会收到错误。

.*的工作方式是将两个矩阵的每个对应元素相乘,只要它们具有相同的维度或者其中一个是标量。因此,当schwingungen是标量时,您的代码将会起作用,但是当它是一个向量时,它的代码可能与您硬编码phi的方式具有不同数量的元素。

对你来说,最简单的行动方式(不一定是最Matlabesque)是循环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)

答案 1 :(得分:0)

在您的代码中,表达式S中的数组phisin(S.*phi)应该具有相同的大小,或者其中一个应该是常量,以便代码正常工作

答案 2 :(得分:0)

在您的函数中,您将phi定义为10001个元素的向量。 在同一个函数中你做S. * phi,所以如果S与phi的长度不同,你将得到“尺寸必须同意”的错误。 在您使用长度为1501的向量调用函数时,您的错误就会出现。

此致