0
我試圖在一個500乘500的方框中模擬一個球及其x和y位置在一定時間內的碰撞。每當我嘗試運行於不同的時間步長的腳本(h
),我不斷收到錯誤:下標分配尺寸不匹配錯誤
Subscripted assignment dimension mismatch.
global h
h_vector=[0.1 0.01 0.001];
t=0:h:500;
for j=1:length(h_vector)
h=h_vector(j);
[xout2,yout2]=walls_euler_method2e;
xout3(j,:)=xout2;
yout3(j,:)=yout2;
end
xout3;
yout3;
function [xout2,yout2]=walls_euler_method2e
global h
f1=5;%dx/dt
f2=-3;%dy/dt
x(1)=0;
y(1)=0;
t=0:h:500;
r=5;%radius of ball
hit_vertical_wall_left_first=0;
hit_horizontal_wall_down_first=0;
vertical_wall_left=250;
vertical_wall_right=-250;
horizontal_wall_up=250;
horizontal_wall_down=-250;
for i=2:length(t)
x(i)=x(i-1)+h.*f1;
y(i)=y(i-1)+h.*f2;
if x(i)==vertical_wall_left-r
f1=-f1;
hit_vertical_wall_left_first=1;
elseif x(1)==vertical_wall_right+r&&hit_vertical_wall_left_first==1;
f1=-f1;
else
fl=f1;
if y(i)==horizontal_wall_down+r
f2=-f2;
hit_horizontal_wall_down_first=1;
elseif y(i)==horizontal_wall_up-r&&hit_horizontal_wall_down_first==1;
f2=-f2;
else
f2=f2;
end
end
end
xout2=x;
yout2=y;
你在哪一行得到錯誤?這意味着您正在嘗試爲不同數量的存儲空間分配多個元素,即您的左手側與右手側不相等。 – Adriaan
錯誤發生在:xout3(J,:)= xout2 – scoobydoo9000
我認爲陣列'xout2'比xout3'的'列的寬度更短或更長。通過執行size(xout2)'和enlarger來檢查這個問題,或者相應地縮短你的數組。 – Adriaan