フィルターのクリア

how to delete a row from a matrix

3 ビュー (過去 30 日間)
nadia nadi
nadia nadi 2015 年 10 月 25 日
編集済み: Stephen23 2015 年 10 月 25 日
Dear,
I need to delete rows with all zeros from B and corresponding ones from b, where Bx>=b, so I wrote this code but I got error because of the index, can anyone check it for me please and if there is any faster way will be very helpful. Thanks in advance.
Nadia
B=[
1 0 0 0 0 0 0
0 0 0 1 0 0 0
0 0 0 0 0 0 0
0 1 0 1 0 0 0
0 0 0 0 1 1 0
0 1 0 0 0 0 1
0 0 0 0 0 0 0
0 0 0 0 0 0 1
0 0 1 0 0 0 0];
b=ones(size(B,1),1);
for i=1:size(B,1)
while B(i,:)==0
B(i,:)=[]
b(i,:)=[]
end
end
  1 件のコメント
Jan
Jan 2015 年 10 月 25 日
The error is caused by running the for i loop until the original size of B, but B has been shortend already inside the loop.

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

採用された回答

Stephen23
Stephen23 2015 年 10 月 25 日
編集済み: Stephen23 2015 年 10 月 25 日
When you use vectorized code then this task is simple, and there is no need for complicated loops:
>>B(any(B,2),:)
ans =
1 0 0 0 0 0 0
0 0 0 1 0 0 0
0 1 0 1 0 0 0
0 0 0 0 1 1 0
0 1 0 0 0 0 1
0 0 0 0 0 0 1
0 0 1 0 0 0 0
  1 件のコメント
nadia nadi
nadia nadi 2015 年 10 月 25 日
編集済み: nadia nadi 2015 年 10 月 25 日
Dear Stephen,
That's great, thanks a lot.
Nadia

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

その他の回答 (0 件)

カテゴリ

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

Community Treasure Hunt

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

Start Hunting!

Translated by