How can I fix the error "Index exceeds matrix dimension"

1 Ansicht (letzte 30 Tage)
Ductho Le
Ductho Le am 22 Okt. 2018
Bearbeitet: KALYAN ACHARJYA am 22 Okt. 2018
In my FEM program, I want to build a matrix bcdof[1;2;7;8;67;68;69;70;71;72] from matrix bcdof1=[1;4;34;35;36] but the program say that "Index exceeds matrix dimension". Can anyone help me, here is my code:
bcdof1=[1;4;34;35;36];
bcdof=zeros(1,2*length(bcdof1));
for i=1:length(bcdof1)
bcdof(1,(2*i-1))=2*bcdof1(1,i)-1;
bcdof(1,(2*i))=2*bcdof1(1,i);
end
  2 Kommentare
madhan ravi
madhan ravi am 22 Okt. 2018
You have to explain the calculation
Ductho Le
Ductho Le am 22 Okt. 2018
the calculation was in my code, each element in matrix bcdof have a corresponding value in the right hand side.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Dennis
Dennis am 22 Okt. 2018
Bearbeitet: Dennis am 22 Okt. 2018
bcdof1 is a column vector you need to index bcdof1(i,1) instead of bcdof(1,i)
bcdof1=[1;4;34;35;36];
bcdof=zeros(1,2*length(bcdof1));
for i=1:length(bcdof1)
bcdof(1,(2*i-1))=2*bcdof1(i,1)-1;
bcdof(1,(2*i))=2*bcdof1(i,1);
end

Weitere Antworten (1)

KALYAN ACHARJYA
KALYAN ACHARJYA am 22 Okt. 2018
Bearbeitet: KALYAN ACHARJYA am 22 Okt. 2018
bcdof1=[1;4;34;35;36];
bcdof=zeros(1,2*length(bcdof1));
for i=1:1 %length(bcdof1)
bcdof(1,2*i-1)=2*bcdof1(1,i)-1;
bcdof(1,2*i)=2*bcdof1(1,i);
end
Your matrix is size 5x1, there is a single column. What you are doing a here using "for loop" from 1 to 5.
when i=1, it is ok, but when i=1, in your following expression
bcdof(1,2*i-1)=2*bcdof1(1,i)-1;
becomes
bcdof(1,3)=2*bcdof1(1,2)-1;
That means bcdof(1,3) and bcdof1(1,2) data is not available in matrix.
As your following data having only
bcdof1=[1;4;34;35;36];
That means
bcdof1(1,1)=1;
bcdof1(2,1)=4;
bcdof1(3,1)=34;
Please note the differences
bcdof1=[1;4;34;35;36]
bcdof1 =
1
4
34
35
36
>> bcdof1=[1,4,34,35,36]
bcdof1 =
1 4 34 35 36
  3 Kommentare
Ductho Le
Ductho Le am 22 Okt. 2018
Bearbeitet: Ductho Le am 22 Okt. 2018
thank you..i have seen that problem.
KALYAN ACHARJYA
KALYAN ACHARJYA am 22 Okt. 2018
Bearbeitet: KALYAN ACHARJYA am 22 Okt. 2018
Third way to avoid the error is- % Index position change from bcdof1(1,i) to bcdof1(i,1)
bcdof1=[1;4;34;35;36];
bcdof=zeros(1,2*length(bcdof1));
for i=1:1%length(bcdof1)
bcdof(1,2*i-1)=2*bcdof1(i,1)-1;
bcdof(1,2*i)=2*bcdof1(i,1);
end

Melden Sie sich an, um zu kommentieren.

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!

Translated by