大量のデータ(それぞれ20MB)を持つテーブルがいくつかあります。それらをTable_1、Table_2、Table_3などと呼ぶことにしましょう。これらのテーブルの構造は、同じ列ヘッダー(ただし行数は変わります)と似ています。 Attribute_A、Attribute_Bなどを考えてみましょう。eval関数を使用して生成された列ベクトルに苦労しています
私は各テーブルのAttribute_Bの計算を行うことに興味があります。これらの計算には、Attribute_Bをループします。
まず、すべてのテーブル名を持つマスターリストを作成します。
Table_List = [Table_1, Table_2, ... Table 10];
ここまで繰り返し、計算を実行できます。単一の計算を行うとCurrent_Tableの値の関数としてevalを、私の列ベクトル名のconcatentationを使用して正常に動作します:私は列ベクトルを反復処理が必要な計算を実行したときに、私はトラブルに実行
for Current_Table = Table_List
Peak_Value = max(eval(strcat(Current_Table,"Attribute_C")));
。例えば、以下のことは失敗する。
for Current_Table = Table_List
for i = 1:length(eval(strcat(Current_Table,".Attribute_B")
X = X + eval(strcat(Current_Table,".Attribute_B"))(i);
評価された列とiの目的のインデックス値と結婚しようとすると、MATLABがハングアップします。これを行う方法はありますか?
すべてのデータを1つの構造にすると、これははるかに簡単になります(文字列リストを使用せずに実際にデータを組み合わせること)。データを書き直さずに各テーブルを繰り返し処理したい。
これは当然、最初に「評価」を使用してはならない理由の1つです。コードをリファクタリングしてください。 – excaza