rmfield / clear structur entry ?

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)

回答 (1 件)

Azzi Abdelmalek
Azzi Abdelmalek 2014 年 9 月 12 日

0 投票

A=struct('x',num2cell(rand(1,5)),'y',num2cell(rand(1,5)),'z',num2cell(rand(1,5)))
A(3)=[]

5 件のコメント

Max Müller
Max Müller 2014 年 9 月 12 日
編集済み: Max Müller 2014 年 9 月 12 日
tried this already...somehow it doesnt work
for u = 1:length(A)
Check = A(u).UsedAmp + A(u).OptimalAmp + A(u).ClosestAmp;
if Check == 0;
A(u) = [ ];
end
end
Pierre Benoit
Pierre Benoit 2014 年 9 月 12 日
編集済み: Pierre Benoit 2014 年 9 月 12 日
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
Max Müller 2014 年 9 月 12 日
Your are right! If Check == 0 deletes one part of the structure, it exceedes the matrix dimension.
Azzi Abdelmalek
Azzi Abdelmalek 2014 年 9 月 12 日
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
Azzi Abdelmalek 2014 年 9 月 12 日
編集済み: Azzi Abdelmalek 2014 年 9 月 12 日
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)=[]

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

カテゴリ

ヘルプ センター および File ExchangeStructures についてさらに検索

質問済み:

2014 年 9 月 12 日

編集済み:

2014 年 9 月 12 日

Community Treasure Hunt

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

Start Hunting!

Translated by