rmfield / clear structur entry ?
Afficher commentaires plus anciens
hey Guys, I have got a 1xn structure. Now i just want to write a code which can delete on column of a structure. For example:
A is structure with A.x / A.y /A.z This is a 1x5 structure. Now I want to make this a 1x4 structure by deleting the 3rd Column. So A(3) is gone and A(4) is now the new A(3) / A(5) is the new A(4)
Réponses (1)
Azzi Abdelmalek
le 12 Sep 2014
A=struct('x',num2cell(rand(1,5)),'y',num2cell(rand(1,5)),'z',num2cell(rand(1,5)))
A(3)=[]
5 commentaires
Max Müller
le 12 Sep 2014
Modifié(e) : Max Müller
le 12 Sep 2014
Pierre Benoit
le 12 Sep 2014
Modifié(e) : Pierre Benoit
le 12 Sep 2014
It may not work because each time you set A(u) to 0, the length of A will reduce, so you will exceed matrix dimensions at some point.
Try this :
Check = [A.UsedAmp] + [A.OptimalAmp] + [A.ClosestAmp];
A(Check == 0) = [];
If it's still doesn't work, it may be that you didn't define your condition correctly.
Max Müller
le 12 Sep 2014
Azzi Abdelmalek
le 12 Sep 2014
A=struct('UsedAmp',num2cell([1 2 3 4 5]),'OptimalAmp',num2cell([-1 2 3 4 -3]),'ClosestAmp',num2cell([0 2 3 4 -2]))
idx=[];
for u = 1:numel(A)
Check = A(u).UsedAmp + A(u).OptimalAmp + A(u).ClosestAmp;
if Check == 0;
idx(end+1)=u
end
end
A(idx)=[]
Azzi Abdelmalek
le 12 Sep 2014
Modifié(e) : Azzi Abdelmalek
le 12 Sep 2014
Or
A=struct('UsedAmp',num2cell([1 2 3 4 5]),'OptimalAmp',num2cell([-1 2 3 4 -3]),'ClosestAmp',num2cell([0 2 3 4 -2]))
A(squeeze(sum(cell2mat(struct2cell(A))))==0)=[]
Catégories
En savoir plus sur Structures dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!