Populate matrix with non-zero elements from previous matrix

I have a 7567*32 matrix in which every row has 4 non-zero elements and the rest are zeros. I want to create a 7567*4 matrix that is populated only with the non-zero elements from the previous matrix. Is there a way to do so?

 採用された回答

Stephen23
Stephen23 2018 年 4 月 13 日
編集済み: Stephen23 2018 年 4 月 13 日

0 投票

I guess you want to keep those non-zero values in the same rows in which case try this, where M is your matrix:
Z = M.';
Z = reshape(Z(Z~=0),4,7567).'

3 件のコメント

Tomás Nunes
Tomás Nunes 2018 年 4 月 13 日
Nice thank you. But apparently some values I have to retrieve from the original matrix are zeros. So what I have to do is basically this: I have one matrix with zeros, ones and minus ones, and another matrix with returns in the same location as the ones and minus ones of the previous matrix. For example: [0 1 -1 1 0 -1; -1 1 0 0 -1 1; 0 0 1 1 -1 -1] and [0 0.2 -0.3 0.4 0 -0.5; -0.6 1.3 0 0 0.1 1.5; 0 0 0.9 0.8 -0.1 -0.2]. Now I have to create that 4-column (3 rows in this case) matrix with the values of the second matrix, given that they are in the same location of the nonzeros in the first matrix. Is this feasible?
Thx a lot
Stephen23
Stephen23 2018 年 4 月 13 日
編集済み: Stephen23 2018 年 4 月 13 日
Generate the indices from the first matrix, and get the values from the second matrix:
>> X = [0 1 -1 1 0 -1; -1 1 0 0 -1 1; 0 0 1 1 -1 -1]
X =
0 1 -1 1 0 -1
-1 1 0 0 -1 1
0 0 1 1 -1 -1
>> M = [0 0.2 -0.3 0.4 0 -0.5; -0.6 1.3 0 0 0.1 1.5; 0 0 0.9 0.8 -0.1 -0.2]
M =
0.00000 0.20000 -0.30000 0.40000 0.00000 -0.50000
-0.60000 1.30000 0.00000 0.00000 0.10000 1.50000
0.00000 0.00000 0.90000 0.80000 -0.10000 -0.20000
>> Z = M.';
>> Z = reshape(Z(0~=X.'),4,[]).'
Z =
0.20000 -0.30000 0.40000 -0.50000
-0.60000 1.30000 0.10000 1.50000
0.90000 0.80000 -0.10000 -0.20000
Stephen23
Stephen23 2018 年 4 月 13 日
Tomás Nunes's "Answer" moved here:
Thank you so much, you're the best

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

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeCreating and Concatenating Matrices についてさらに検索

質問済み:

2018 年 4 月 13 日

コメント済み:

2018 年 4 月 13 日

Community Treasure Hunt

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

Start Hunting!

Translated by