2012-07-25 33 views
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)

回答

2

首先得到平均值(我假设数据矩阵在变量X中):

Xmns = mean(X); 

然后找到最小值,用“MIN”:

[val,ind] = min(Xmns); 

“VAL”保持的最小值,“IND”在Xmns对应的索引,这是相应的列。

要找到列是什么意思最接近特定值,你可以再次使用min:

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

现在“实业”持有列索引,平均最接近“key_val”。下一列只是“ind + 1”和前一个“ind-1” - 只要确保你没有超出矩阵的末尾(即ind可能已经是1或大小(X,2))。

此外,由于列索引“IND”,创建与该列一个新的变量,你只需使用:

sc= X(:,ind); 

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

X(:,ind) = []; 

就是这样。

+0

非常感谢您的帮助! – 2012-07-25 16:27:06