gpt4 book ai didi

mysql - Matlab 使用带有元胞数组的 accumarray

转载 作者:可可西里 更新时间:2023-11-01 07:58:56 25 4
gpt4 key购买 nike

我对 Matlab 很陌生,但我对其他编程语言有一些经验。我在 Matlab 中有一个从 MySQL 导入的非常大的表。它作为元胞数组给出,看起来像这样:

 date   key     sales    weight  name
12/11 101 1200 20 blue
12/11 178 1200 70 purple
13/11 209 1300 15 purple
12/11 101 1200 10 blue
14/11 678 1200 10 yellow
12/11 340 1500 30 green
17/11 178 1900 50 purple

我希望输出是这样的:

 key     sales    weight  name
101 2400 30 blue
178 3100 120 purple
209 1300 15 purple
678 1200 10 yellow
340 1500 30 green

所以我想合并“键”列中具有相同编号的行。同时,我想对“销售额”和“重量”列求和并保留“名称”列(每个“键”具有相同的“名称”,但每个“名称”可以有多个“键”)

我知道这可以通过 for 循环实现,但由于我必须以类似但不同的方式操作大量表,因此这是计算密集型的。

我读过类似的问题,这可以使用 accumarray 来解决,但是这可以用 accumarray 和 sub 作为元胞数组来完成吗?那会是什么样子?

最佳答案

这是使用 accumarray 的一种方法,但是考虑新的 table 可能值得您花时间数据结构而不是单元格矩阵(我相信你可以很容易地转换成它)

T = {  101     1200     20      'blue'
178 1200 70 'purple'
209 1300 15 'purple'
101 1200 10 'blue'
678 1200 10 'yellow'
340 1500 30 'green'
178 1900 50 'purple'};

[u, ind, x] = unique([T{:,1}])

key = T(ind,1)
sales = accumarray(x', [T{:,2}])
weight = accumarray(x', [T{:,3}])
name = T(ind,4)

[key, num2cell(sales), num2cell(weight), name]

关于mysql - Matlab 使用带有元胞数组的 accumarray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21133765/

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