0

テーブルの最後に行を追加しようとしています。例えば:

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

テーブルは空であると宣言され、最初の行が追加されますが、for ループの 2 回目の反復で以下のエラー メッセージが表示されます。

Subscripted assignment dimension mismatch for table variable 'name'.

これは、2 回目の反復で変数名の文字数が多いために発生することを理解しています。これを実装する方法はありますか?

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

4

1 に答える 1

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
于 2016-08-01T19:06:30.430 に答える