【发布时间】:2014-06-07 03:23:51
【问题描述】:
使用 MATLAB,除了使用嵌套 FOR 循环的蛮力技术之外,我很好奇是否有更优雅的方法从我在下面显示的示例数据结构中提取 X 和 Y 数据。我无法在 MATLAB 中使用 bsxfun、arrayfun 或 strucfun 设计出一种优雅的方式来执行此操作。
% Create an example of the input structure that I need to parse
for i =1:100
setName = ['n' num2str(i)];
for j = 1:randi(10,1)
repName = ['n' num2str(j)];
data.sets.(setName).replicates.(repName).X = i + randn();
data.sets.(setName).replicates.(repName).Y = i + randn();
end
end
clearvars -except data
% Brute force technique using nested FOR Loops to extract X & Y from this
% nested structure for easy plotting. Is there a better way to extract the
% X & Y values created above without using FOR loops?
n = 1;
setNames = fieldnames(data.sets);
for i =1:length(setNames)
replicateNames = fieldnames(data.sets.(setNames{i}).replicates);
for j = 1:length(replicateNames)
X(n) = data.sets.(setNames{i}).replicates.(replicateNames{j}).X;
Y(n) = data.sets.(setNames{i}).replicates.(replicateNames{j}).Y;
n = n+1;
end
end
scatter(X,Y);
【问题讨论】:
-
这与“防御性编程”有什么关系?为什么它被标记为这样?
标签: arrays matlab struct nested-lists