方法#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);