2016-08-08 52 views
0

Ich habe 5 verschiedene Struktur und ich möchte einige Variablen für alle von ihnen berechnen. Um das zu tun, schrieb ich den folgenden Code:MATLAB-Struktur Umwandlung Fehler

for i=1:5 
[StructureI(i), ReqTab(i), jt(i), B(i)]=Checkall(E); 
end 

Die Werte StructureI, ReqTab, jt and B werden in einer anderen Funktion berechnet und sie sind

StructureI= 1X4 matrix, 
ReqTab= 4X2 matrix, 
jt=2x1 matrix, 
B=4x4 matrix 

Wenn ich den Code ausführen es alle Zugriffe auf Variablen in der Funktion CheckAll berechnet. Wenn es sich jedoch an den übergeordneten Code wendet, gibt es und Fehler "Conversion to double from struct ist nicht möglich."

Wie kann ich dieses Problem lösen?

Vielen Dank im Voraus.

+0

Die von Ihnen erwähnten Strukturen enthalten jeweils nur eine Matrix. Warum benutzen Sie überhaupt Strukturen? Könnten Sie "StructureI" nicht einfach als 2D-Matrix zurückgeben und dann eine dritte Dimension verwenden, um die Dirrefert-Ergebnisse in jeder Schleife zu speichern? (gleich für die anderen 3 vars) –

Antwort

1

Sie nicht direkt von Doppel zuweisen können auf struct, stattdessen haben Sie die spezifischen Bereich schreiben field_name zuweisen:

[StructureI(i).field_name, ReqTab(i), jt(i), B(i)] = Checkall(E); 

Wenn alle diese Variablen (dh auch ReqTab, jt, B) Strukturen sind, dann natürlich müssen Sie das Feld in jedem von ihnen angeben, unter Verwendung der Notation ..

Wie jedoch in den Kommentaren erwähnt, sind alle Iterationen Ihrer Schleife genau gleich (keine Verwendung von i darin), also warum brauchen Sie diese Schleife? nur um 5 Kopien zu machen?

+0

Es funktioniert. Danke vielmals – user70299