How can I remove empty cells from struct data?

How can I remove empty cells from struct data?
I have tried to use this but it didn't work.
Charge(Charge==0) = [];

2 件のコメント

Oguz Kaan Hancioglu
Oguz Kaan Hancioglu 2023 年 4 月 5 日
You need to build for loop to check the filed of struct is empty or not. You can use this code.
k = 1;
for i = 1:length(Charge)
if ~isempty(Charge(i).Voltage_measured)
ChargeNew(k).Voltage_measured = Charge(i).Voltage_measured;
ChargeNew(k).Current_measured = Charge(i).Current_measured;
ChargeNew(k).Temperature_measured = Charge(i).Temperature_measured;
ChargeNew(k).Current_charge = Charge(i).Current_charge;
ChargeNew(k).Voltage_charge = Charge(i).Voltage_charge;
ChargeNew(k).Time = Charge(i).Time;
k = k + 1;
end
end
Bob
Bob 2023 年 4 月 6 日
Thank you for your answer.

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

 採用された回答

Jon
Jon 2023 年 4 月 5 日

0 投票

fun = @(s) all(structfun(@isempty,s));
idx = arrayfun(fun,Charge)
Charge(idx)=[]; % remove the empty elements

3 件のコメント

Jon
Jon 2023 年 4 月 5 日
編集済み: Jon 2023 年 4 月 5 日
Assuming that all of the fields are empty for the elements that you want to remove you could do this, which is a simpler
% find the locations where there are empty fields, assume that if
% Charge.Voltage_measured is empty the other fields are empty too
idl = cellfun('isempty',{Charge.Voltage_measured});
% just keep the non-empty elements
Charge = Charge(~idl); % or alternatively remove the empty ones using Charge(idl) = [];
Bob
Bob 2023 年 4 月 6 日
Thank you for your answer
Jon
Jon 2023 年 4 月 6 日
Your welcome

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

その他の回答 (0 件)

カテゴリ

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

質問済み:

Bob
2023 年 4 月 5 日

コメント済み:

Jon
2023 年 4 月 6 日

Community Treasure Hunt

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

Start Hunting!

Translated by