matlab --error:index必须是正整数或逻辑 - 如何制作电影

时间:2011-03-28 13:35:58

标签: matlab movie

我有这个matlab代码,它给了我标题中的错误。

% solution of the scalar wave 1d equation
time=1000;
steps=1000;

a=input('Please enter the value of the ratio cdt/dx :');

%preallocate matrix u
u=zeros(steps,time);

%fill matrix u
for i=1:time-1
    for j=1:steps-1
        if (i==1)
            u(j,i)=1; EDITED-->>from u(j,i)=0 % initial condition

        else        EDIT -->> j==1 and i==1 becomes j==2,i==2
            if (j==2 && i>=2 && i<=50) % 50 is the time step for the pulse
                u(j,i)=50;

            else
                %solution of wave equation
    u(j,i+1)=a*a*(u(j+1,i)-2*u(j,i)+u(j-1,i))+2*u(j,i)-u(j,i-1);-->here is the error
            end
        end
    end
end


for k=1:steps    EDIT--> if mod(i,100)==0

                        figure(i/100)
                        plot(u(:,i+1))
plot(u(k,1:100))
plot(u(k,1:200))
plot(u(k,1:300))
plot(u(k,1:400))
....
end

另外,如何更有效地编写最后一个循环(使用图表)以及如何创建电影? 编辑 - &GT;解决

1 个答案:

答案 0 :(得分:1)

当i和j = 1时,

u(j,i-1)和u(j-1,i)是未定义的;记住,MATLAB矩阵索引从1开始,而不是0。