I have a matrix like this
a=[ 0.7446 0.0364 186.1153 0 134.5022 114.8212 84.7745 130.8661
0 0 13.8840 0 16.1683 10.4461 69.8035 114.2774];
i want to delete zeros and their corresponding values. The solution should be like this...
b= [186.1153 134.5022 114.8212 84.7745 130.8661
13.8840 16.1683 10.4461 69.8035 114.2774];

 採用された回答

Image Analyst
Image Analyst 2015 年 2 月 7 日

3 投票

This will get rid of all columns that have a zero anywhere in them:
colsWithZeros = any(a==0)
b = a(:, ~colsWithZeros)

2 件のコメント

Jan
Jan 2015 年 2 月 7 日
If a gets a matrix with a single row unexpectedly, this will fail. Better specify the dimension to operate on explicitly:
colsWithZeros = any(a==0, 1)
Matlab's smart guess to operate on the first non-singelton dimension is a keen source of many bugs.
Matlab111
Matlab111 2015 年 2 月 8 日
Image Analyst- Thank you

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

その他の回答 (2 件)

Jason Moore
Jason Moore 2015 年 2 月 7 日
編集済み: Jason Moore 2015 年 2 月 7 日

0 投票

I think this question was already asked before but this code should do it.
b = a(find(a~=0))

2 件のコメント

Image Analyst
Image Analyst 2015 年 2 月 7 日
Nope.
Matlab111
Matlab111 2015 年 2 月 8 日
Thank you

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

ulgi onor
ulgi onor 2015 年 2 月 7 日

0 投票

a(a==0)=[]
a =
Columns 1 through 9 0.7446 0.0364 186.1153 13.8840 134.5022 16.1683 114.8212 10.4461 84.7745 Columns 10 through 12 69.8035 130.8661 114.2774

2 件のコメント

David Young
David Young 2015 年 2 月 7 日
I think that what's wanted is a 2-row matrix with the relevant columns deleted.
This answer doesn't deliver that - it shares the same problem as Jason Moore's.
David Young
David Young 2015 年 2 月 7 日
Also note that your result has different elements to the matrix b in the question.

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

Community Treasure Hunt

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

Start Hunting!

Translated by