構造体同士の計算

29 ビュー (過去 30 日間)
yuuya suzuki
yuuya suzuki 2019 年 7 月 19 日
コメント済み: yuuya suzuki 2019 年 7 月 22 日
構造体、同士を簡単に加算、減算したいと思っています。
たとえば以下のような処理です
X.J1=20;
X.J2=20;
X.J3=20;
Y.J1=24;
Y.J2=10;
Y.J3=10;
Z=X-Y;  ←これがしたいができない
単純にフィールドごとに計算すればできるのはわかるのですが
フィールドが増えると面倒なので簡単な方法があれば教えてください
  1 件のコメント
yuuya suzuki
yuuya suzuki 2019 年 7 月 22 日
Thank you,

サインインしてコメントする。

採用された回答

Kenta
Kenta 2019 年 7 月 21 日
x=struct2table(X);
y=struct2table(Y);
C=x{1,:}-y{1,:}
他の回答者さまのやり方のほうが、汎用的で、いろいろなものに使えて優れているとは思いますが、
少なくとも、今回の計算では、このコードでも同様の結果が得られました。簡単な演算のみならこのような方法でも良いかもしれません。
  3 件のコメント
Kenta
Kenta 2019 年 7 月 21 日
certainly, seems better
yuuya suzuki
yuuya suzuki 2019 年 7 月 22 日
Thank you, everyone. It was helpful.

サインインしてコメントする。

その他の回答 (1 件)

Yoshio
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
  2 件のコメント
yuuya suzuki
yuuya suzuki 2019 年 7 月 22 日
ご回答ありがとうございます
やってみたのですが以下のエラーが起こってしまいます。
'struct' 型の入力引数の演算子 '-' が未定義です。
エラー: DivStructures (line 24)
OutPut.(fld_name) = x.(fld_name)-y.(fld_name);
yuuya suzuki
yuuya suzuki 2019 年 7 月 22 日
すみません解決しました

サインインしてコメントする。

カテゴリ

Help Center および File Exchange起動と終了 についてさらに検索

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!