2016-08-01 14 views
0

テーブルの最後に行を追加しようとしています。たとえば、次のテーブルが空宣言さ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 

は、1行目を追加したが、forループの2回目のエラーメッセージの下に与える:私は、これが原因で起こることを理解

Subscripted assignment dimension mismatch for table variable 'name'. 

変数名は2番目の反復でより多くの文字を持っています。これを実装する方法はありますか?

これは私の問題を説明するために生成したサンプルコードです。私の実際のコードでは、問題は似ていますが、構造型変数が変更できない別の関数から返されています。

答えて

3

まず全体の構造体配列を定義:

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)); 

そしてテーブルに変換します

Tab = struct2table(s); 

結果:

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

あなたはこれらのすべてで私を殺しているの構造体( 'name'、LastName、 '年齢'、年齢、 '身長'、身長、体重、体重、血圧、血圧) ' – Suever

+0

私はOPはデータを知っていますが、私は答えを編集していましたが、あなたの提案をそのまま受け入れることはできません。すべてのデータをネストした構造になります。 – EBH

+0

また、 'BloodPressure(i、:)'を調整して両方の値を取得することもできます。 – Suever

関連する問題