Effacer les filtres
Effacer les filtres

Deleting row and column with all zeros and putting it back

3 vues (au cours des 30 derniers jours)
Mohammad Asif Iqbal Khan
Mohammad Asif Iqbal Khan le 23 Mar 2018
Modifié(e) : Matt J le 23 Mar 2018
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?

Réponse acceptée

Matt J
Matt J le 23 Mar 2018
Modifié(e) : Matt J le 23 Mar 2018
Another solution would be to never remove them in the first place
data=B{1,1}; data2=data;
r=any(data,2);
c=any(data,1);
data2(r,c)=inv(data(r,c));

Plus de réponses (2)

Rik
Rik le 23 Mar 2018
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

Birdman
Birdman le 23 Mar 2018
Modifié(e) : Birdman le 23 Mar 2018
One workaround could be(Consider your B is double array, extracted from the cell):
r=all(B==0,2);
c=all(B==0,1);
B(r,:)=[];
B(c,:)=[];
%do your calculation
B(:,find(c)+1)=B(:,c)
B(find(r)+1,:)=B(r,:)
B(:,c)=0+0j;
B(r,:)=0+0j

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by