matlab - 分配期间的索引

标签 matlab indexing octave

假设我有这个示例数据

A =
1.0000     6.0000   180.0000    12.0000
1.0000     5.9200   190.0000    11.0000
1.0000     5.5800   170.0000    12.0000
1.0000     5.9200   165.0000    10.0000
2.0000     5.0000   100.0000     6.0000
2.0000     5.5000   150.0000     8.0000
2.0000     5.4200   130.0000     7.0000
2.0000     5.7500   150.0000     9.0000

我想计算每列的方差,按类别分组(第一列)。

我使用以下代码进行处理,但它使用硬编码索引,需要知道每个类的样本数量,并且它们必须按特定顺序排列。

有更好的方法吗?

variances = zeros(2,4);
variances = [1.0 var(A(1:4,2)), var(A(1:4,3)), var(A(1:4,4));
             2.0 var(A(5:8,2)), var(A(5:8,3)), var(A(5:8,4))];

disp(variances);

1.0 3.5033e-02   1.2292e+02   9.1667e-01
2.0 9.7225e-02   5.5833e+02   1.6667e+00

最佳答案

将类标签和数据分成不同的变量。

cls = A(:, 1);
data = A(:, 2:end);

获取类标签列表

labels = unique(cls);

计算方差

variances = zeros(length(labels), 3);
for i = 1:length(labels)
  variances(i, :) = var(data(cls == labels(i), :)); % note the use of logical indexing
end

关于matlab - 分配期间的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13617532/

相关文章:

Matlab:如何从外部 API 调查已编译的 m 代码进程?

c++ - 删除重复条目

python - MATLAB/Octave corr 和 Python numpy.correlate 有什么区别?

linq - RavenDB:从多个博客索引博客文章标签

octave - 带有 Octave 脚本的字符模式(shell/ASCII)图

matlab - 使用 Octave 解方程

matlab - 运行使用多个 MATLAB session 的脚本

Java VS Matlab : Math. 随机()和随机数

matlab - 在 CT 图像中分割肺部和结节

sql - 如何决定何时在表列上使用索引