How can I create a matrix out of a matrix?
显示 更早的评论
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
2015-2-17
1 个投票
indices = find(any(A,2)); B = [indices A(indices,:)];
Mat
2015-2-17
B=sum(A,2)
C=find(B~=0)
D=[C A(C,:)]
??
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
2015-2-17
Mischa Kim
2015-2-17
Not quite sure, I understand. When I run my code I get
B = [(1:size(A,1))' A];
B(~any(B(:,2:end),2),:) = []
B =
2 5 2 4
4 4 1 8
5 9 5 6
which is what the result is supposed to look like, according to your requirements. Am I missing something?
Rengin
2015-2-17
Mischa Kim
2015-2-17
Rengin, I assume your zeros (in matrix A) are not really zeros. Please post the entire code so we can re-produce.
Rengin
2015-2-17
Mischa Kim
2015-2-17
Please zip and attach to the comment. There's a paper clip icon on the right on top of the text box.
Rengin
2015-2-17
Rengin
2015-2-17
Mischa Kim
2015-2-17
Will do.
Rengin
2015-2-17
Rengin
2015-2-19
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.
类别
在 帮助中心 和 File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!