0

Xデータで満たされた行列と、それに対応する各列のヘッダーをMATLABにインポートしました。Xここで問題となるのは、ヘッダーセルの各列の名前をそれに応じた名前で変更するにはどうすればよいかということです。
これをループで実行したいと思います。
この状況で名前変更プログラムをループする方法を教えてもらえますか?

4

2 に答える 2

2

個々の変数ではなく、データから構造を作成することをお勧めします。列の数が多い場合でも、ワークスペースが乱雑になることはなく、名前が衝突した場合にワークスペースにすでに存在する変数が上書きされることもありません。スプレッドシートのすべてのデータをまとめて保持し、列名でアクセスできるようにします。列名のセル配列とデータの行列から構造を簡単に作成するには、cell2structを使用します。

>> colnames = {'odds','evens'};
>> data = [1 2;3 4;5 6];
>> spreadsheet_structure = cell2struct(num2cell(data,1), colnames, 2)

spreadsheet_structure = 

     odds: [3x1 double]
    evens: [3x1 double]

num2cell(M,1)各セルが行列の列であるセル配列を作成しますM

于 2012-05-28T18:45:59.207 に答える
0

ヘッダー列をループし、evalを使用して、マトリックス「ヘッダー」に文字列として含まれる名前の変数を作成します。

  [X,header,~] = xlsread('eaef21.xls',1,'A1:AY541');
  for H = 1:size(header,2)
     eval([header(1,H), " = X(:,", H, ");"]);
  end

また、希望どおりに機能していることを確認できるまで、eval上記を置き換えると非常に便利なことがよくあります。dispを使用dispすると、何が起こっているのかを理解するのにも役立ちます。

于 2012-05-28T11:40:18.150 に答える