【发布时间】:2017-10-18 20:21:10
【问题描述】:
我有各种结构体,其中包含字段 W、P、E,其中包含数值。我想开发一种简洁的方法来添加和减去这些结构,而无需每次都在子函数中解包和重新打包(到目前为止,这一直是我的解决方案)
例如,给定:
S.W = 2
S.P = 3
S.E = 4
M.W = 20
M.P = 30
M.E = 40
我希望能够做到X = S + M 并最终得到:
X.W = 22
X.P = 33
X.E = 44
我目前的尝试是通过一个新类,如下所示:
classdef CV
properties
W
P
E
end
methods
function r = plus(o1,o2)
r = CV;
r.E = o1.E + o2.E;
r.P = o1.P + o2.P;
r.W = o1.W + o2.W;
end
end
end
这允许执行 S + M 并以与输入相同的形式返回一个新变量。我一般不熟悉课程,想知道这是否是正确的形式。如果是这样,我可能会继续在methods 部分添加minus 和times 的函数。但是,这似乎需要大量重复的代码,我觉得必须有一个更简单的解决方案。非常感谢任何建议。
【问题讨论】:
-
你可以通过
struct2array将struct转换成数组,进行计算,根据struct每个字段的维度将结果赋给struct -
这是一个好计划,但我担心没有办法检查所有结构是否具有相同的顺序(即,由于它们都在代码中的不同位置定义,我不想担心它们都是按 W、P、E 的顺序定义的,如果这是有道理的