how to fix Index exceeds matrix dimensions?
1 view (last 30 days)
Show older comments
sing lai on 23 Apr 2014
Commented: Niklas Nylén on 24 Apr 2014
L = 0.8;c=1;T=0.5;
a = 0 :120;
it0 = inline('0.2.*sin(x)','x');
for i = 1:M + 1, u(i,1) = it0(x(i));
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);
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..
Niklas Nylén on 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.
More Answers (0)
Find more on Creating and Concatenating Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!