How do you iterate over multiple fields in a structure?

50 次查看(过去 30 天)
I have a 1X1 struct with 48 fields in it. Each field is 1X5120 int 32. I want to downsample each of these fields using the downsample(y, n) function.
However, I would like to accomplish this using a loop. How can it be done?
  1 个评论
Stephen23
Stephen23 2023-1-21
编辑:Stephen23 2023-1-21
You could make this task easier by improving the data design.
Numbered fieldnames (or variable names) like that is usually a sign that you are doing something wrong.
Rather than forcing meta-data (e.g. pseudo-indices) into the fieldnames like you are doing, your data would be much better stored in a non-scalar structure or a simple cell array. Then you can use basic indexing to loop over the data.

请先登录,再进行评论。

采纳的回答

Stephen23
Stephen23 2023-1-21
编辑:Stephen23 2023-1-21
One approach is to use FIELDNAMES() and dynamic fieldnames:
For example, where S is your scalar structure:
n = 5;
C = fieldnames(S);
for k = 1:numel(C)
F = C{k};
A = S.(F);
B = downsample(A,n);
S.(F) = B;
end
Another simple option is to use STRUCTFUN():
For example:
n = 5;
fnh = @(v) downsample(v,n);
S = structfun(fnh, S)

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Structures 的更多信息

标签

产品


版本

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by