index error is appearing for last line
조회 수: 1 (최근 30일)
이전 댓글 표시
U=zeros(1,2,'sym');
B=zeros(10,'sym');
U(1)=1;
U(2)=a;
for k=1:10
B(1)=0;
for i=1:k
B(1)=B(1)+U(i)*U(k-i+1)
end
end
It is displaying the error for B(1)=B(1)+U(i)*U(k-i+1)
댓글 수: 6
DGM
2021년 6월 2일
Okay, that's one more bit of info, but that still doesn't clarify much. Why does B have 100 elements if you're only using one? Why does U only have 2 elements if you're trying to use 10 (actually you're now trying to use up to 11). I guess you could do like the answer below and just specify U to have 10 (or 11) elements instead of 2, but you're also assigning U(2) and then overwriting it.
I think what everyone is saying boils down to a common problem in communicating intent in code. The loop structure is incongruous when considering the array sizes. Since the intent and variable meaning are unknown at a conceptual level and the code as presented doesn't do what's desired, there's nothing left to tell us what it's supposed to do.
If offering a potential solution requires too many tenuous assumptions of intent, I don't think I'm alone in hesitating to add more confusion to the discussion by fishing with guesses.
채택된 답변
Girijashankar Sahoo
2021년 6월 1일
B(1)=B(1)+U(i)*U(k-i+1)
% Here you defined length(U)=2 while U(i)*U(k-i+1) is over indexed value
% So my suggestion denfine U=zeros(1,10,'sym')
댓글 수: 0
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!