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 回答