# 構造体同士の計算

15 views (last 30 days)
yuuya suzuki on 19 Jul 2019
Commented: yuuya suzuki on 22 Jul 2019

たとえば以下のような処理です
X.J1=20;
X.J2=20;
X.J3=20;
Y.J1=24;
Y.J2=10;
Y.J3=10;
Z=X-Y;　　←これがしたいができない

フィールドが増えると面倒なので簡単な方法があれば教えてください

#### 1 Comment

yuuya suzuki on 22 Jul 2019
Thank you,

Kenta on 21 Jul 2019
x=struct2table(X);
y=struct2table(Y);
C=x{1,:}-y{1,:}

madhan ravi on 21 Jul 2019
Also struct2array() would suffice.
Kenta on 21 Jul 2019
certainly, seems better
yuuya suzuki on 22 Jul 2019
Thank you, everyone. It was helpful.

Yoshio on 19 Jul 2019
こんな方法ではどうでしょうか。
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

yuuya suzuki on 22 Jul 2019
ご回答ありがとうございます
やってみたのですが以下のエラーが起こってしまいます。
'struct' 型の入力引数の演算子 '-' が未定義です。
エラー: DivStructures (line 24)
OutPut.(fld_name) = x.(fld_name)-y.(fld_name);
yuuya suzuki on 22 Jul 2019
すみません解決しました