方法#1
直截了当的方法是使用for
循环来完成:
C = [];
for i = 1:numel(A);
C(i).averageB = sum(B{i}) / length(B{i});
C(i).averageA = sum(A{i}) / length(A{i});
C(i).tapWithSign = (C(i).averageB - C(i).averageA) ./ ...
(C(i).averageB + C(i).averageA / 2) * 100;
C(i).tapAB = abs(tapWithSign{i});
end
我不确定您希望如何存储结果,所以我将它们存储在 中C
,这是一个结构数组,计算结果作为字段。
方法#2
或者,您可以cellfun
像这样使用:
averageA = cellfun(@(x)(sum(x)/length(x)), A, 'Un', 0);
averageB = cellfun(@(x)(sum(x)/length(x)), B, 'Un', 0);
tapWithSign = cellfun(@(x, y)deal((y - x) ./ (y + x / 2) * 100), ...
averageA, averageB, 'Un', 0);
tapAB = cellfun(@abs, tapWithSign, 'Un', 0);
请注意,这会将计算结果生成为元胞数组。如果要将它们存储在结构中,如第一个示例中所示:
C = struct('averageA', averageA, 'averageB', averageB, ...
'tapWithSign', tapWithSign, 'tapAB', tapAB);