Deleting the row of a 3D matrix with a condition

9 ビュー (過去 30 日間)
Ashane Fernando
Ashane Fernando 2019 年 2 月 15 日
コメント済み: Ashane Fernando 2019 年 2 月 22 日
I have a simple 3D matrix. Every time I do this operation on the (:,:,1) matirx it gives me an error saying "A null assignment can have only one non-colon index." I dont understand this. But in a simple 2D matrix it works. If I assign "NaN" instead of "[]" then the second row is assigned with NaN NaN values (in 3D). Can I not delete the row in a 3D matrix? Appreciate some insight to this.
A(:,:,1) = [1 2 ; 0 5 ; 7 8 ];
A(:,:,2) = [10 11 ; 1 14 ; 0 17 ];
A((A(:,1,1).*A(:,2,1))==0,:,1)=[]
  1 件のコメント
KALYAN ACHARJYA
KALYAN ACHARJYA 2019 年 2 月 15 日
Look here you will get the exact answer
As per undestanding from your question, you have to delete the complete plane, not a row line.

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

採用された回答

Jan
Jan 2019 年 2 月 15 日
編集済み: Jan 2019 年 2 月 15 日
Of course you cannot delete one row in a 3D array: The resulting array must have the same length for all subvectors. Removing a row from a 3D array is equivalent to removing one element from a matrix: The result would not be rectangular anymore, but matrices must have the same number of elements for all rows, and all columns, respectively.
A(:,:,1) = [1 2 ; 0 5 ; 7 8 ];
A(:,:,2) = [10 11 ; 1 14 ; 0 17 ];
B = A;
B(:, :, 1) = [] % Working
A(1, :, 1) = [] % Error: output cannot be a valid array
Therefore I cannot guess, what you expect as output and cannot suggest a solution. Assigning NaN to a row works, because this does not change the number of elements.
  5 件のコメント
Jan
Jan 2019 年 2 月 15 日
Sorry, I cannot follow you. I asked you what happens if you have only 1 zero in the input, such that you cannot remove a single subvector without destroying the rectangular shape of the array. Now your answer is: If the array contains one 0 only, then it actually contains two? What does this mean?
If all submatrices contain the same number of zeros, than you can remove the corresponding rows or columns or what you want. But you did not clarify yet, if this is guaranteed.
Ashane Fernando
Ashane Fernando 2019 年 2 月 22 日
Hi Jan,
I realised I was looking at a wrong thing. I figured that I cannot delete a row from a 3d matrix.
I converetd the necessary values to a 2D matrix and did the manipulation as I required.
Thanks for showing me some light.

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

その他の回答 (0 件)

カテゴリ

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

タグ

製品


リリース

R2016a

Community Treasure Hunt

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

Start Hunting!

Translated by