Index exceeds matrix dimensions. I can't figure out what I'm doing wrong, please help.
이전 댓글 표시
here is my code:
if true
S=[];
n=2;
w=abs(10^6);
v=1:998;
u= -1:1;
for a = -2 : 0.04 : 2
for b = -2 : 0.04 : 2
vec=[0;0];
n= 3: 1000; %n=1 and n=2 both equal 0
v(n+1)= a*v(n) + b*v(n-1) + u(n);
c= a + 1i*b; %using i instead of j
while (v(n+1) < w)
u= 1-2*rand(1);
v=vec;
n=n+1;
end %end while loop
if v(n+1) < w
S= [S c];
else
S=0;
end %end if statement
end %end b= for loop
end %end a= for loop
T=plot(S, '*');
axis(T,'square')
end
I don't know what this is supposed to plot cause i keep getting an "Index exceeds matrix dimensions." error. My TA didn't explain squat about what needed to be done and I really don't understand any sort or programming(even though I try my best it just doesn't click in my brain). An explanation would also be appreciated if anyone can help me. Thanks a bunch.
답변 (1개)
Star Strider
2015년 2월 13일
1 개 추천
We can’t figure out what you’re doing wrong either, because you haven’t told us what line is throwing the error, the size of the array you are indexing into, or the value of the index in the line that is throwing the error.
We’re very good at MATLAB, but we’ve proven over time to be absolutely hopeless mind-readers.
댓글 수: 12
Savanna
2015년 2월 13일
Star Strider
2015년 2월 13일
MATLAB will tell you what line is throwing the error.
Please copy the entire red error message, including the line that is throwing the error. MATLAB should produce all this information, but it will at the very least provide you with the line number. That will allow you to find the line and copy it to your Question or Comment.
Please also provide the other information, such as the size of the array you are indexing, and the value of the index when your code throws the error.
Star Strider
2015년 2월 13일
편집: Star Strider
2015년 2월 13일
Before your for loop, add this line:
S = [];
If you know how large your ‘S’ array will be (my guess is (1x10201), and since it seems to be a vector, preallocate it as:
S = nan(1,10201);
again before the loop. Then subscript the individual elements as you add them to ‘S’, such as:
S(k1) = c;
You will have to figure out how to calculate ‘k1’. The easiest way would simply be to use a counter and not worry about calculating it from the other indices. The errors and warnings should then go away.
Savanna
2015년 2월 13일
Star Strider
2015년 2월 13일
It’s changing size at every iteration because you decided to not preallocate ‘S’. Don’t worry. If your code runs and gives the results you expect, then the only problem is that it will be a bit slower and less efficient than if you had preallocated ‘S’.
Savanna
2015년 2월 13일
Star Strider
2015년 2월 13일
My pleasure.
What line is throwing the error? We need to see the line itself, not simply the line number.
Savanna
2015년 2월 13일
Star Strider
2015년 2월 13일
What is the size of ‘S’, and what is the value and size of of ‘c’ when the error occurs?
Savanna
2015년 2월 13일
Star Strider
2015년 2월 13일
That doesn’t mean anything to me. To fit in ‘S’ as you’ve written your code (at least as I understand it), ‘c’ must be a scalar. It cannot be a vector.
카테고리
도움말 센터 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!