0

CSV ファイルから取得したデータ セットを分析しようとしています。データが matlab に読み込まれた後、自分のデータのみの変数が残ります。列数と行数はファイルごとに異なります。各列を平均してから、特定の値に最も近い平均を持つ変数を作成する方法はありますか? 次に、この中央の列の直前と直後の列を選択してそれらの変数を作成し、平均が最も低い列の変数を作成しますか? 現在、列を手動で選択し、そのように変数を作成しています。

例えば:

この数字の表があります。(この例では平均化を容易にするために、各列に同じ数値を使用しました。

    1     2     3     4     5     

    1     2     3     4     5

    1     2     3     4     5

    1     2     3     4     5

    1     2     3     4     5

平均が 3.2 に最も近い列が必要だとしましょう

その列は、平均が 3 である列 3 になります。次に、コードで前の列 (列 2) と後の列 (列 4) を選択する必要があります。平均が最も低い列 (列 1) と同様に

4

1 に答える 1

2

最初に平均を取得します(データ行列は変数Xにあると仮定します)。

Xmns = mean(X);

次に、最小値を見つけるには、「min」を使用します。

[val,ind] = min(Xmns);

「val」は最小値を保持し、「ind」は対応する列であるXmnsの対応するインデックスを保持します。

特定の値に最も近い列の平均を見つけるには、ここでもminを使用できます。

[val,ind] = min(abs(Xmns-key_val));

これで、「ind」は「key_val」に最も近い平均を持つ列インデックスを保持します。次の列は「ind+1」で、前の「ind-1」です。マトリックスの端を超えていないことを確認してください(つまり、indはすでに1またはsize(X、2)である可能性があります)。

また、列インデックス "ind"を指定して、その列で新しい変数を作成するには、次を使用します。

sc= X(:,ind);

Xからその列を削除する場合:

X(:,ind) = [];

それがすべてです。

于 2012-07-25T16:03:20.030 に答える