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