How can I create a matrix out of a matrix?

1 回表示 (過去 30 日間)
Rengin
Rengin 2015 年 2 月 17 日
編集済み: Mischa Kim 2015 年 2 月 19 日
Hello,
% I have a matrix as below:
A=[0 0 0;5 2 4;0 0 0;4 1 8;9 5 6;0 0 0]
% My 2.,4. and 5. rows are different than '0'. As a result I wanna have a matrix as below including the number of rows different than '0':
B=[2 5 2 4;4 4 1 8;5 9 5 6];
However, I have a bigger matrix in my real problem. It is just an example
Thx

回答 (3 件)

Elias Gule
Elias Gule 2015 年 2 月 17 日
indices = find(any(A,2)); B = [indices A(indices,:)];

Mat
Mat 2015 年 2 月 17 日
B=sum(A,2)
C=find(B~=0)
D=[C A(C,:)]
??

Mischa Kim
Mischa Kim 2015 年 2 月 17 日
Rengin, you could use, e.g.
B = [(1:size(A,1))' A];
B(~any(B(:,2:end),2),:) = []
  12 件のコメント
Rengin
Rengin 2015 年 2 月 19 日
Hi Mischa,
I just wanted to make some regulations on my code and send it today. Actually I had another question, if you have time to take a look at my code. I create Ibestfirst matrix in 173th row and put it in two for loops. However, at the end, my matrix size changes to 5x500, although it has to be 1x500. I am not a programmer btw. I am just trying to write some basic codes to test some algorithms :(
thx
Mischa Kim
Mischa Kim 2015 年 2 月 19 日
編集済み: Mischa Kim 2015 年 2 月 19 日
After computing Xs add
B = [(1:size(Xs,1))' Xs];
B(~any(B(:,2:end),2),:) = []
to get
B =
1.0e+02 *
0.190000000000000 1.387778103306779 0.343814253001248
0.250000000000000 0.208481799046993 0.176385990188109
1.170000000000000 0.458209269814333 3.910781553669295
1.280000000000000 0.483323512292465 0.264376184324426
1.820000000000000 0.684481966455650 0.795152138548950
3.240000000000000 0.846839613465022 1.292539618758099
3.610000000000000 0.568404629169297 0.577528050340383
4.340000000000000 0.190023379731620 0.466716273193995
4.770000000000000 1.018698679681144 2.434206303256232
The first column contains the row numbers: 19, 25, 117, etc.
To your second question: the variable iter is set to 5 when you enter the for-loop, most likely because it is set to that value in one of the other scripts. Simply use a different (new) variable name, e.g. my_iter, and it'll work.

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

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by