構造体同士の計算
8 ビュー (過去 30 日間)
古いコメントを表示
構造体、同士を簡単に加算、減算したいと思っています。
たとえば以下のような処理です
X.J1=20;
X.J2=20;
X.J3=20;
Y.J1=24;
Y.J2=10;
Y.J3=10;
Z=X-Y; ←これがしたいができない
単純にフィールドごとに計算すればできるのはわかるのですが
フィールドが増えると面倒なので簡単な方法があれば教えてください
採用された回答
Kenta
2019 年 7 月 21 日
x=struct2table(X);
y=struct2table(Y);
C=x{1,:}-y{1,:}
他の回答者さまのやり方のほうが、汎用的で、いろいろなものに使えて優れているとは思いますが、
少なくとも、今回の計算では、このコードでも同様の結果が得られました。簡単な演算のみならこのような方法でも良いかもしれません。
3 件のコメント
その他の回答 (1 件)
Yoshio
2019 年 7 月 19 日
こんな方法ではどうでしょうか。
X.J1=20;
X.J2=20;
X.J3=20;
Y.J1=24;
Y.J2=10;
Y.J3=10;
Z = MySub(X,Y)
function z = MySub(x,y)
fields = fieldnames(x);
n = length(fields);
z = x;
for i = 1:n
fld_name = fields{i};
z.(fld_name) = x.(fld_name)-y.(fld_name);
end
end
参考
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!