構造体同士の計算

조회 수: 4 (최근 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 CenterFile Exchange에서 Logical에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!