Deleting row and column with all zeros and putting it back
3 ビュー (過去 30 日間)
古いコメントを表示
Hell0,
I am trying to perform an operation on a big Matrix (within a cell). Here,
B=
-17.5310 +20.7302i 0.0000 + 0.0000i 5.4364 - 2.0952i
0.0000 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
5.4364 - 2.0952i 0.0000 + 0.0000i -17.5310 +20.7302i
so, I used this,
data=B{1,1};
data( ~any(data,2), : ) = []; %rows
data( :, ~any(data,1) ) = []; %columns
data2=data;
This deletes the rows and columns with all zeros and returns me this,
data2=
-17.5310 +20.7302i 5.4364 - 2.0952i
5.4364 - 2.0952i -17.5310 +20.7302i
then, I inverse the matrix and get my desired matrix. But, after that, I want to put back the deleted rows and column to its original places. How can I do that?
0 件のコメント
採用された回答
その他の回答 (2 件)
Rik
2018 年 3 月 23 日
B={[-17.5310+20.7302i 0.0000+0.0000i 5.4364-2.0952i
0.0000+0.0000i 0.0000+0.0000i 0.0000+0.0000i
5.4364-2.0952i 0.0000+0.0000i -17.5310+20.7302i]};
data=B{1,1};
keep_rows=any(data,2);
data( ~any(data,2), : ) = []; %rows
keep_cols=any(data,1);
data( :, ~any(data,1) ) = []; %columns
data2=data;
%do whatever you need to do with the data2 matrix
data3a=zeros(size(data2,1),numel(keep_cols));
data3a(:,keep_cols)=data2;%undo removing of cols
data3=zeros(numel(keep_rows),numel(keep_cols));
data3(keep_rows,:)=data3a;%undo removing of rows
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!