我在MATLAB函數上做了一些功課。 任務是製作一個函數acc=accvec(m,rv,rl)
,其計算如下:
。Matlab - 尺寸不匹配
其中m
是3x1陣列,rv
是3x3x3陣列而rl
是3x3陣列。我的解決方案如下:
function acc=accvec(m,rv,rl)
% calculate the acceleration of the object
s=size(rv);
acc=zeros(s(1),s(2));
global G
for i=1:s(2)
for j=1:s(2)
if i ~= j
for k=1:3
acc(k,i)=acc(k,i)-G*m(j)*rl(i,j)./rv(k,i,j)^3;
end
end
end
end
這裏是一個link到包含使用的所有功能的RAR文件。如果你給rv
與r=[1 0 0; 0 1 0; 0 0 1]
和rl
與新鮮計算rv
並m=[1 2 3]
和G=1;
的結果應該是
acc =
-1.7678 0.3536 0.3536
0.7071 -1.4142 0.7071
1.0607 1.0607 -1.0607
但我的功能ac
拋出一個尺寸不匹配,我只是想不通,爲什麼和我需要其他人看着它並去哦這很簡單。
哦,沒錯。現在運行。我只是發現了錯誤(我翻了rv和rl)。所以現在它會產生正確的結果。謝謝。全局變量的原因是我們假設G被定義爲檢查我們的代碼的網站中的全局變量。我的錯。非常感謝! – SiGF 2014-10-19 17:26:51