フィルターのクリア

3D to 2D matrix and then drop the NANS?

2 ビュー (過去 30 日間)
Islam
Islam 2013 年 11 月 29 日
回答済み: Wayne King 2013 年 11 月 29 日
I have b(j,k,w) 3D matrix (3,4,2), I want to convert it to one line vector and then drop the NAN elements
The 3D matrix is
b(:,:,1) =
218. 129. 142. 63.
NaN NaN NaN NaN
NaN NaN NaN NaN
b(:,:,2) =
140 109 119 61
NaN NaN NaN NaN
NaN NaN NaN NaN
I want to reshape the b(:,:,1) in one line then b(:,:,2) , combine them in one line and then drop the NANS
I tried to :- convert it to 2D matrix with the full set reshape(b,[w ,k*j])
ans =
218. 129. 142. 63. 140 109 119 61
NaN NaN NaN NaN NaN NaN NaN NaN
NaN NaN NaN NaN NaN NaN NaN NaN
Now I want it to be like this, but I couldn't keep the order of the lines as shown
218. 129. 142. 63. NaN NaN NaN NaN NaN NaN NaN NaN 140 109 119 61 71 NaN NaN NaN NaN NaN NaN NaN NaN
and then drop the NANS to end with this (how to drop them ?)
218. 129. 142. 63. 140 109 119 61 71

採用された回答

Wayne King
Wayne King 2013 年 11 月 29 日
You can just reshape the transposes of each "page"
c1 = reshape(b(:,:,1)',12,1);
c2 = reshape(b(:,:,2)',12,1);
C = [c1; c2];
C = C(~isnan(C));

その他の回答 (1 件)

Wayne King
Wayne King 2013 年 11 月 29 日
A = reshape(b,24,1);
A = A(~isnan(A));
  1 件のコメント
Islam
Islam 2013 年 11 月 29 日
編集済み: Islam 2013 年 11 月 29 日
your solutions works for the above example, but assume the 3D matrix is this instead:
b(:,:,1) =
218. 129. 142. 63.
NaN NaN NaN NaN
30 500 120 10
b(:,:,2) =
140 109 119 61
120 500 10 20
NaN NaN NaN NaN
when converting to 2D with the full set using reshape reshape(b,[w ,k*j])
it will become : [
218 129 142 63 140 109 119 61
NaN NaN NaN NaN 120 500 10 20
30 500 120 10 NaN NaN NaN NaN ]
The problem here is I want to keep it one line in this order first [ 218 129 142 63 NaN NaN NaN NaN 30 500 120 10 140 109 119 61 120 500 10 20 NaN NaN NaN NaN ]
and then drop the NAN

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

カテゴリ

Help Center および File ExchangeCell Arrays についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by