我正在尝试分析从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列)
答案 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) = [];
就是这样。