index error is appearing for last line

조회 수: 1 (최근 30일)
yogeshwari patel
yogeshwari patel 2021년 6월 1일
댓글: yogeshwari patel 2021년 6월 2일
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
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.
yogeshwari patel
yogeshwari patel 2021년 6월 2일
Thanks for your comment.

댓글을 달려면 로그인하십시오.

채택된 답변

Girijashankar Sahoo
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개)

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by