how to fix Index exceeds matrix dimensions?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
sing lai
am 23 Apr. 2014
Kommentiert: Niklas Nylén
am 24 Apr. 2014
L = 0.8;c=1;T=0.5;
a = 0 :120;
it0 = inline('0.2.*sin(x)','x');
M=80;N=50;
dx=L/M;dt=T/N;
for i = 1:M + 1, u(i,1) = it0(x(i));
end
r = c*(dt/dx); r1 = (r^2)/2; r2 = 2*(1 - (r^2));
u(2:M,2) = r1*u(1:M - 1,1) + (1 - (r^2))*u(2:M,1) + r1*u(3:M + 1,1);
for k = 3:N + 1
u(2:M,k) = (r^2)*u(1:M - 1,k - 1) + r2*u(2:M,k-1) + (r^2)*u(3:M + 1,k - 1)...
- u(2:M,k - 2);
end
for n=1:N;
figure
plot(a,u(:,n));
end
I want plot waveform graph that u(x,t) versus x, but come out error [??? Index exceeds matrix dimensions.
Error in ==> osc at 8 end ]
Can anyone help me fix the error?thanks..
0 Kommentare
Akzeptierte Antwort
Niklas Nylén
am 23 Apr. 2014
First, you should predefine the size of u instead of changing the size throughout your script.
Second, in the first for loop you have written
u(i,1) = it0(x(i));
But x is not defined, did you mean to use the variable a as input? Why do you even need a loop, the following should be fine (assuming u is predefined)
u(:,1) = it0(a);
When I run your code I do not get the "Index exceeds matrix dimensions" error but instead I get an error because the number of rows in u is not equal to the number of values in a. Because you did not predefine the size of u the size will be 81*81 and the vector a will have length 120.
2 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!