0

有一个 C 变量,它有 300 个样本,并且在 X 轴上有一个范围,变量分布在该范围上。我需要对 C 样本进行排序并确定它属于哪个区间。X 范围分为 100 个区间 (%)。所以我需要创建一个脚本,它将在 int(i) 和 int(i+1) 之间进行间隔,处理整个 C 并将合适的 C(i) 保存到变量 D 中并从中取平均值。非常感谢。汤姆

4

1 回答 1

2

您可以使用 和 的组合来执行此histc操作accumarray。首先让我们生成一些数据 -

>> X = rand(3000, 1);            // 3000 samples of the variable X
>> C = X + randn(3000, 1);       // 3000 samples of C, which depends on X
>> edges = linspace(0, 1, 101);  // edges of the bins for X

现在您可以使用第二个输出找出每个观察值属于哪个 binhistc

>> [tmp, bin] = histc(X, edges);

最后,您可以创建一个向量Cavg,用于accumarray遍历每个 bin 并取它们的平均值

>> Cavg = accumarray(bin, C, [101,1], @mean, NaN);

您可以绘制观察结果及其平均值,以检查您是否得到了预期的结果

>> plot(X, C, '.');
>> hold on;
>> plot(edges, Cavg, 'r', 'LineWidth', 2);

在此处输入图像描述

于 2013-10-23T12:27:17.087 回答