I keep getting Dimensions of matrices being concatenated are not consistent error.
for k=1:61
a(:,k)=angle(k,:);
A=[cosd(5) -sind(a); -sind(5) cosd(a)];
x=A\B;
end
I don't get what I am doing wrong

 採用された回答

Stephen23
Stephen23 2019 年 2 月 16 日
編集済み: Stephen23 2019 年 2 月 16 日

0 投票

5 is a scalar. A scalar has size 1x1.
On the second loop iteration a has size Nx2 (we don't know the actual size because you did explain what size angle is).
Then you calculate some trig functions using those 5 and a, giving 1x1 and Nx2 arrays. You then try to concatenate those arrays like this:
[1x1,Nx2;1x1,Nx2]
which is an error if N>1 because then the number of rows are different, which means that those arrays cannot be concatenated together horizontally:
  • To horizontally concatenate arrays they must have the same number of rows.
  • To vertically concatenate arrays they must have the same number of columns.
Check the sizes of the arrays that you are trying to concatenate and you will find that one/both of those conditions are not fulfilled.

2 件のコメント

Hans123
Hans123 2019 年 2 月 16 日
I am not 100% sure on how to correct the issue, I just need the matrix to have different values for angle after each iteration how to achieve this? I pasted the code below
angle=-30:1:30;
B= [1200 ; 0 ];
for k=1:61
a(:,k)=angle(k,:);
A=[cosd(5) -sind(a); -sind(5) cosd(a)];
x=A\B;
end
Stephen23
Stephen23 2019 年 2 月 17 日
編集済み: Stephen23 2019 年 2 月 17 日
This avoids the error:
a = angle(k);
Only you can decide if this is correct or not.
Also note that you completely discard all x arrays except fot the last one, making your entire for loop superfluous. You might want to use some indexing into an output array.

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

その他の回答 (0 件)

カテゴリ

製品

質問済み:

2019 年 2 月 16 日

編集済み:

2019 年 2 月 17 日

Community Treasure Hunt

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

Start Hunting!

Translated by