2016-08-01 10 views
0

Ich versuche, Zeilen am Ende der Tabelle hinzuzufügen. Zum Beispiel:Einfügen von Zeilen an einer Tabelle in MATLAB

LastName = {'Smith';'Johnson';'Williams';'Jones';'Brown'}; 
Age = [38;43;38;40;49]; 
Height = [71;69;64;67;64]; 
Weight = [176;163;131;133;119]; 
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80]; 
Tab=table; 
s=struct; 
for i=1:5 
    s.name=LastName{i}; 
    s.age=Age(i); 
    s.heigt=Height(i); 
    s.weight=Weight(i); 
    s.BP=BloodPressure(i); 
    temp=struct2table(s); 
    Tab(end+1,:)=temp; 
end 

Die Tabelle leer deklariert wird, fügt es die erste Zeile, aber in der zweiten Iteration der for-Schleife gibt folgende Fehlermeldung:

Subscripted assignment dimension mismatch for table variable 'name'. 

Ich verstehe, dass dies geschieht, weil die Der Variablenname hat in der zweiten Iteration mehr Zeichen. Gibt es eine Möglichkeit, dies zu implementieren?

Dies ist ein Beispielcode, den ich generiert habe, um mein Problem zu erklären. In meinem tatsächlichen Code ist das Problem ähnlich, aber eine Strukturtypvariable wird von einer anderen Funktion zurückgegeben, die ich nicht ändern kann.

Antwort

3

zuerst die gesamte Struktur Array definieren:

LastName = {'Smith';'Johnson';'Williams';'Jones';'Brown'}; 
Age = [38;43;38;40;49]; 
Height = [71;69;64;67;64]; 
Weight = [176;163;131;133;119]; 
BloodPressure = [124 93; 109 77; 125 83; 117 75; 122 80]; 
s = struct('name',LastName,'age',num2cell(Age),... 
    'heigt',num2cell(Height),... 
    'weight',num2cell(Weight),... 
    'BP',num2cell(BloodPressure,2)); 

Und dann ist es zu Tabelle konvertieren:

Tab = struct2table(s); 

Das Ergebnis:

Tab = 
     name  age heigt weight  BP  
    __________ ___ _____ ______ __________ 
    'Smith'  38  71  176  124  93 
    'Johnson'  43  69  163  109  77 
    'Williams' 38  64  131  125  83 
    'Jones'  40  67  133  117  75 
    'Brown'  49  64  119  122  80 
+0

Du bringst mich um mit all diesen loops .... 'struct ('Name', Nachname, 'Alter', Alter, 'Höhe', Höhe, 'Gewicht', Gewicht, 'BP', Blutdruck)' – Suever

+0

Ich war mir nicht sicher, was OP 'weiß' über die Daten, aber ich war gerade dabei, die Antwort zu bearbeiten, aber Sie können Ihren Vorschlag nicht übernehmen, wie es ist, es macht die Struktur verschachtelt mit allen Daten – EBH

+0

Guter Anruf. Vielleicht möchtest du auch 'BloodPressure (i, :) ', um beide Werte zu packen. – Suever

Verwandte Themen