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

14 ビュー (過去 30 日間)
Ductho Le
Ductho Le 2018 年 10 月 22 日
編集済み: KALYAN ACHARJYA 2018 年 10 月 22 日
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 件のコメント
madhan ravi
madhan ravi 2018 年 10 月 22 日
You have to explain the calculation
Ductho Le
Ductho Le 2018 年 10 月 22 日
the calculation was in my code, each element in matrix bcdof have a corresponding value in the right hand side.

サインインしてコメントする。

採用された回答

Dennis
Dennis 2018 年 10 月 22 日
編集済み: Dennis 2018 年 10 月 22 日
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
  1 件のコメント
Ductho Le
Ductho Le 2018 年 10 月 22 日
thank you man..I'm forgot this:))

サインインしてコメントする。

その他の回答 (1 件)

KALYAN ACHARJYA
KALYAN ACHARJYA 2018 年 10 月 22 日
編集済み: KALYAN ACHARJYA 2018 年 10 月 22 日
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 件のコメント
Ductho Le
Ductho Le 2018 年 10 月 22 日
編集済み: Ductho Le 2018 年 10 月 22 日
thank you..i have seen that problem.
KALYAN ACHARJYA
KALYAN ACHARJYA 2018 年 10 月 22 日
編集済み: KALYAN ACHARJYA 2018 年 10 月 22 日
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

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by