对结构数组的每个字段进行循环

12次浏览(过去30天)
哈里·史密斯
哈里·史密斯 2021年7月24日
编辑: Yazan 2021年7月26日
大家好!
我希望有人能帮助我。
我有一个5个字段的结构数组。在每个字段中,都有一个矩阵(240x4)。
我想创建一个for循环,可以:
-一次选择一个字段
-选择该字段的一列
-执行该列的值的计算
-将结果保存在大小为500x1000的矩阵中
-重新开始一个新的领域
不幸的是,我不熟悉matlab。有人能帮帮我吗?
这是我的代码:
我的结构数组叫做 str
fn =字段名(str)
i_field = 1:元素个数(fn)
i_column = 1:4
nan_matrix =南(500 x1000);
%我的脚本
结束
%我怎么能填补nan_matrix与我的结果,并保存它?
结束

答案(1)

Yazan
Yazan 2021年7月24日
编辑:Yazan 2021年7月24日
请参阅下面的示例,了解如何获取结构的字段,然后访问每个字段中的数据。
玩具数据:两个字段的结构
S.data1 = randn(240, 4);
S.data2 = randn(240, 4);
%获取字段的名称
字段=字段名(s);
%遍历字段
nfield = 1:长度(字段)
Dat = getfield(s, fields{nfield});
%执行任何你需要的计算
%示例:获取一个字段中的一列数据
C = date (5,:);
结束
2的评论
Yazan
Yazan 2021年7月26日
编辑:Yazan 2021年7月26日
在矩阵中保存结果是一个基本的Matlab操作,所以我假设即使是一个基本的Matlab用户,也知道如何这样做。不管怎样,这取决于你想如何在NaN矩阵中保存结果。如果我们假设字段数据(每个大小为240 × 4)应该在矩阵NaN中垂直连接,那么您可以执行以下操作:
clc,清晰
玩具数据:两个字段的结构
S.data1 = 0 (240, 4);
S.data2 = ones(240, 4);
S.data3 = 2*ones(240, 4);
S.data4 = 3*ones(240, 4);
S.data5 = 4*ones(240, 4);
%获取字段的名称
字段=字段名(s);
%矩阵来保存结果
allRes = nan(500, 1000);
%遍历字段
nfield = 1:长度(字段)
Dat = getfield(s, fields{nfield});
在这里执行你需要的任何计算
将结果保存在allRes中
allRes((1:尺寸(dat, 1)) + (nfield-1) *大小(dat, 1), 1:尺寸(dat, 2)) = dat;
结束

登录评论。

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!