gpt4 book ai didi

matlab - 分配期间的索引

转载 作者:太空宇宙 更新时间:2023-11-03 20:16:43 25 4
gpt4 key购买 nike

假设我有这个示例数据

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com