多列,选择最接近值的方式

时间:2012-07-25 15:53:15

标签: matlab variables average

我正在尝试分析从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列)

1 个答案:

答案 0 :(得分: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或大小(X,2))。 / p>

另外,给定列索引“ind”,要使用该列创建新变量,只需使用:

sc= X(:,ind);

如果你想从X中删除该列:

X(:,ind) = [];

就是这样。