J'ai différentes structures avec des champs W, P, E, qui contiennent des valeurs numériques. Je veux développer une manière propre à ajouter et soustraire ces struct sans déballer et remballer en sous-fonctions chaque fois (ce qui a été ma solution jusqu'ici)Comment ajouter, soustraire, etc. deux structures élément par élément quand elles ont les mêmes champs
Par exemple, étant donné:
S.W = 2
S.P = 3
S.E = 4
M.W = 20
M.P = 30
M.E = 40
Je veux être capable de faire X = S + M
et finissent avec:
X.W = 22
X.P = 33
X.E = 44
Ma tentative actuelle de ce faire, est au moyen d'une nouvelle classe, qui se présente comme suit:
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
Cela permet de faire S + M et renvoie une nouvelle variable sous la même forme que les entrées. Je ne suis généralement pas familier avec les cours, et je voulais savoir si c'était une bonne forme. Si oui, je pourrais aller de l'avant et ajouter des fonctions pour minus
et times
dans la section methods
. Cependant, cela semble exiger beaucoup de code répétitif et je pense qu'il doit y avoir une solution plus simple. Tout conseil est fort apprécié.
Vous pouvez convertir struct en tableau par 'struct2array', faire le calcul et affecter le résultat dans la structure en fonction de la dimension de chaque champ de la structure –
C'est un bon plan mais je crains de ne pas avoir un moyen de vérifier que toutes les structures ont le même ordre (ie qu'elles sont toutes définies à des endroits différents dans le code, je ne veux pas m'inquiéter qu'elles aient toutes été définies dans l'ordre W, P, E Si cela a du sens – teepee