2012-03-30 8 views
1

Gegeben seien zwei struct Arrays A und B mit dem Feld f1:Eigenschaft/Feld-Arithmetik auf Objekt/struct Array in Matlab

A = struct('f1',{1,2,3}) 
B = struct('f1', {4,5,6}) 

, um die Inhalte der f1 Felder struct Array A zu den Bereichen B zuweisen von

[B.f1] = A.f1 

aber ich kann nicht herausfinden, was passiert, wenn Sie tun arithmetics auf dem Feld durchführen möchten, zum Beispiel, wenn Sie das negativ der f1 Felder A in B.

[B.f1] = -A.f1 
speichern möchten

nicht funktioniert, müssen Sie zuerst die Elemente von A, um für den Betreiber verketten

-[A.f1] 

aber dann ist das Ergebnis ein Vektor, arbeiten, die man irgendwie brauchen, um „auszupacken“ gefunden die Anzahl der Ausgabeargumente.

Antwort

3

können Sie verwenden num2cell:

tmp=num2cell(-[A.f1]); 
[B.f1]=tmp{:}; 

Ergebnis:

B.f1 

ans = 
    -1 
ans = 
    -2 
ans = 
    -3 
+0

Danke, habe ich versucht, mit 'deal' aber ohne' num2cell' und es scheint, dass es eigentlich 'num2cell', die alle funktioniert das schweres Heben. Es ist nicht einmal notwendig, 'deal' zu verwenden,' [B.f1] = tmp {:}; 'funktioniert genauso gut. – Johan

+0

Sie haben Recht. Ich habe bearbeitet. – Oli