问题标签 [accumarray]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
365 浏览

matlab - 使用 accumarray 进行加权平均?

accumarray在 Matlab 中非常棒,我经常使用它。我有一个问题,我想传递给的函数accumarray是加权平均值。即它接受两个向量,而不是一个向量。这似乎是不支持的用例accumarray

我的理解正确吗?

考虑,函数weightedAverage

现在,我们要运行accumarray如下:

但matlab返回:

0 投票
1 回答
162 浏览

matlab - accumarray 的输出说明

我刚刚阅读了 accumarray 的文档,无法理解第二个示例。示例如下

如果我做

然后我得到

这对我来说是合乎逻辑的。但是,当我添加第二列时,为什么矩阵的数字B只是排列在“随机”(我猜它不是随机的,但对我来说似乎是随机的)位置?4x2subs

0 投票
1 回答
217 浏览

matlab - 快速计算子矩阵每一列的唯一值数量

我有一个X包含数十行数千列的矩阵,所有元素都是分类的并重新组织为索引矩阵。例如,将ithcolumnX(:,i) = [-1,-1,0,2,1,2]'转换为X2(:,i) = icof [x,ia,ic] = unique(X(:,i)),以便于使用 function accumarray。我从矩阵中随机选择了一个子矩阵,并计算了子矩阵每一列的唯一值的数量。我执行了这个程序 10,000 次。我知道几种计算列中唯一值数量的方法,到目前为止我发现的禁食方法如下所示:

这是一种执行随机排列测试来计算X大小数据矩阵n by c和分类变量之间的信息增益的方法y,在该矩阵变量下y是随机排列的。在上述代码中,所有随机排列y的都存储在矩阵yrand中,排列的数量为numperm。的唯一值y存储在 中uy,唯一编号为ny。在 的每次迭代中1:numpermXk根据唯一元素选择y子矩阵,统计该子矩阵每一列中唯一元素的个数并存储在矩阵中pxs

上述代码中最耗时的部分是i = 1:cfor large的迭代c

是否可以以矩阵方式执行该功能accumarray以避免for循环?我还能如何改进上面的代码?

--------

根据要求,提供了包括上述代码的简化测试功能

和一个测试数据

测试功能

返回Elapsed time is 15.391628 seconds.我的电脑。在测试函数中,设置了 1000 个排列。因此,如果我执行 10,000 次排列并进行一些额外的计算(与上面的代码相比可以忽略不计),时间就会超出150 s预期。我认为代码是否可以改进。直观地说,accumarray以矩阵方式执行可以节省大量时间。我可以吗?

0 投票
1 回答
256 浏览

matlab - 使用 accumarray 输出矩阵

MATLABaccumarray在许多应用程序中的强大功能令人难以置信。我的问题是,我accumarray应用于输入的函数有三个输出,并且accumarray只能处理标量输出。例如,我想做这样的事情:

并有accumarray回报:

我想我可以只运行accumarray3 次,但我的功能很慢,运行accumarray一次会比运行 3 次快得多。我只是在这里冲洗吗?

0 投票
4 回答
312 浏览

matlab - 如何根据多个标准累积(平均)数据

我有一组数据,其中我以 3 个读数为一组记录了值(以便能够获得 SEM 的一般概念)。我将它们记录在一个如下所示的列表中,我试图将其分解为每组 3 个点的平均值:

原始表

我想基本上将每 3 行折叠成一行,其中给出了该集合的平均数据值。本质上,它看起来如下:

期望的结果

这是我基本上知道如何在 Excel 中做的事情(即使用数据透视表),但我不确定如何在 MATLAB 中做同样的事情。我尝试过使用accumarray,但很难知道如何从本质上合并多个条件。我需要创建一个subs数组,其编号对应于每组唯一的 3 个数据点。通过蛮力,我可以创建一个数组,例如:

使用一些循环并将其作为我的 subs 数组,但由于它与数据本身无关,并且整个过程中可能会出现奇怪的问题(即每组超过 3 个数据点,或丢失数据等)。我知道必须有某种方法可以为这样的事情进行这种 Pivot-table-esque 分组,但需要一些帮助才能使其起步。谢谢。

这是文本形式的输入数据:

0 投票
2 回答
64 浏览

matlab - 计算二维矩阵的相同行

我有一个两列矩阵。我需要将其设为三列,其中第三列显示前两列在输入矩阵中的出现次数作为一行。

基本上:输入

期望的输出:

我已经知道 accumarray 和 unique 的适当组合应该具有魅力。我只是不知道如何正确组合它们。

0 投票
2 回答
42 浏览

matlab - 从满足给定条件的行中提取值

我想每30分钟计算一次商店的总收入,

我有一个像这样的数据集:

我试图像这样实现总计:

但无法得到我想要的。

0 投票
2 回答
61 浏览

matlab - 在 Matlab 中平均复制数据,多个变量

我试图在 MATLAB 中平均复制数据并遇到一些困难。变量为depth, Var1, Var2。有时有一个复制Var1,有时有一个复制,有时对于给定Var2的两者都有一个复制。所以矩阵可能看起来像这样:Var1Var2depth

depth是唯一标识符,所以我想创建一个如下[depth, Var1, Var2]所示的矩阵:

如果我有一个 n×2 矩阵,该函数accumarray将起作用,但这是 n×3。关于如何进行的任何建议?

0 投票
2 回答
817 浏览

matlab - MATLAB:以矩阵为值的 accumarray(第二个输入参数)

我有一个包含百分比值的矩阵,其中每一行代表一个单独的观察值。我需要计算这些值对应于相同下标的累积乘积。我尝试使用该accumarray函数,只要我使用列向量作为值(而不是矩阵),它就可以正常工作并且符合预期。我想知道在不遍历值矩阵的各个列的情况下解决问题的最佳方法是什么?

这是我的示例代码:

0 投票
2 回答
58 浏览

matlab - 在 MATLAB 中格式化来自 excel 工作表(两个标准)的数据

我有一个与最近提出的另一个问题有关的问题。我将我的数据下载为csv.file. 然后我在 MATLAB 中对其进行格式化。我获得了格式化的数据,例如:

在此处输入图像描述

我想格式化数据,以便获得:

在此处输入图像描述

换句话说,日期应该在第一列,而两个标识符应该分别在前两行。

我尝试了@gnovice 提供的代码,但我在调整第二个标识符时遇到了问题。代码是:

其中data等于图(1)。

因此,我得到一个矩阵,A如:

如何以照顾第二个标识符的方式调整我的代码并A变为: