我试图取一组相当大的数据的平均值,所以我创建了一个函数来做到这一点。数据存储在一些struct1.struct2.data(:,column)
有 4 个中struct1
,每个都有 20 到 30 个子struct2
- 我想要平均的数据始终存储在第 7 列中,我想将每个数据的平均值输出struct2.data(:,column)
到2xN
数组/双精度数(第 1 列这个输出是对每个子struct2
列的引用,第 2 列是平均值)
omly 的问题是,我找不到正确指向每个结构的方法(大量阅读)。我正在使用字符串来引用结构,但出现错误Attempt to reference field of non-structure array.
很明显它不喜欢这样。这是我用的。(请原谅不恰当)
function [avrg] = Takemean(prefix,numslits)
% place holder arrays
avs = [];
slits = [];
% iterate over the sub-struct (struct2)
for currslit=1:numslits
dataname = sprintf('%s_slit_%02d',prefix,currslit);
% slap the average and slit ID on the end
avs(end+1) = mean(prefix.dataname.data(:,7));
slits(end+1) = currslit;
end
% transpose the arrays
avs = avs';
slits = slits';
avrg = cat(2,slits,avs); % slap them together
它落在这条线上avs(end+1) = mean(prefix.dataname.data,7);
,因为如您所见,prefix
并且dataname
是字符串。因此,在四处寻找之后,我尝试制作这些字符串变量,genvarname()
但仍然没有运气!
我花了几个小时在本应该是 5 分钟的编码上。:'(
编辑:哦prefix
是一个字符串,例如'Hs'
,结构的结构(大声笑)是例如Hs.Hs_slit_XX.data()
哪里XX
是例如01,02,...27
编辑:如果我只是运行mean(Hs.Hs_slit_01.data(:,7))
它工作正常......但是我不能遍历所有_slit_XX