问题标签 [bsxfun]

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 投票
3 回答
722 浏览

r - 如何将此“稀疏”Matlab bsxfun 调用转换为 R?

以非稀疏形式看起来像这样:

编辑:

我想对这些稀疏向量进行矩阵乘法,并返回一个稀疏数组:

NRowSums * NColSums(我认为;或者如果返回标量,则翻转它们)不使用非稀疏变量临时存储数据。

编辑2:

我目前有这个:

这对于我正在尝试做的事情似乎有点尴尬,尤其是类型转换。它也非常低效,因为它计算存在 NRowSum 或 NColSum 的所有元素,而不仅仅是这两者的交集。也就是说,这个 NSums 中的条目比原始稀疏矩阵中的条目多 100 倍。

0 投票
5 回答
28180 浏览

arrays - 在 MATLAB 中,什么时候最适合使用 bsxfun?

我注意到很多关于 Stack Overflow 上 MATLAB 问题的好答案经常使用这个函数bsxfun。为什么?

动机:在 MATLAB 文档中bsxfun,提供了以下示例:

当然,我们可以使用以下方法执行相同的操作:

事实上,一个简单的速度测试表明第二种方法快了大约 20%。那么为什么要使用第一种方法呢?我猜在某些情况下使用bsxfun会比“手动”方法快得多。我真的很想看到这种情况的一个例子以及为什么它更快的解释。

此外,这个问题的最后一个元素,再次来自 MATLAB 文档bsxfun:“C = bsxfun(fun,A,B) 将函数句柄 fun 指定的逐元素二元运算应用于数组 A 和 B,单例启用扩展。”。“启用单例扩展”这句话是什么意思?

0 投票
2 回答
595 浏览

matlab - 没有置换或重塑的矩阵的笛卡尔和

我有两个二维矩阵 a 和 b。让我们说a = randn(10, 20)b = randn(10, 30)。我想计算笛卡尔和!这两个数组中,即a的每一列和b的每一列都应该选择一次,并加在一起形成一个大小为(10, 20*30)的矩阵c。这可以通过使用bsxfunpermutereshapeas 来完成:

我想知道是否存在一种更快更直接的方法来执行此操作,而无需置换或重塑。我知道为此编写一个 mex 函数很容易,但我想知道 mex 是否必要。

谢谢!

0 投票
1 回答
11500 浏览

matlab - 如何将新点投射到 PCA 新基础上?

例如,我有 9 个变量和 362 个案例。我进行了 PCA 计算,发现前 3 个 PCA 坐标对我来说已经足够了。

现在,我的 9 维结构中有新点,我想将其投影到主成分系统坐标。如何获得它的新坐标?

在此处输入图像描述

如何获得投影到新主成分基础的新点的坐标?

0 投票
1 回答
146 浏览

matlab - 错误仅在我不使用 parfor 时触发?

在下面的第一个 Matlab 脚本中,当我如图所示运行它时,我没有遇到任何错误,并且代码产生了预期的结果,但是当我取出 matlabpool open 和 matlabpool close 以及将 parfor 循环更改为 for 循环时,我得到以下错误:

如果需要,我很乐意发送 CRM_22_12.mat。

为什么只有当我使用常规 for 循环而不是 parfor 循环时才会触发错误?

%

%

0 投票
2 回答
109 浏览

matlab - 根据索引列表从数组中提取固定数量的数据

我有数组

以及一系列指示我想从哪里开始提取数据的索引:

对于每个 index i,我想要该索引和列或行中的接下来的四个(嗯x,真的)元素。我将避免接近数组的末尾,以便可以忽略特殊情况。

如果我对此进行硬编码,我可以使用:

这将达到我的结果。

i可能有许多不同的值。

关于如何将索引列表转换为范围矩阵或解决此问题的其他方法的任何想法?

编辑 我正在使用 Matlab 2007;如果解决方案仅依赖于 Matlab 的内部结构和工具箱​​,那将是更好的选择。bsxfun直到 2007a 才出现。

0 投票
1 回答
3018 浏览

matlab - Matlab 下标索引必须是实数正整数或逻辑数

我哪里做错了?问题出在:R = sqrt(bsxfun(@minus,XX,(XX)').^2+bsxfun(@minus,YY,(YY)').^2);

0 投票
1 回答
140 浏览

matlab - 在 MATLAB 中向量化双循环:为每一行分配表达式

我需要填写一个矩阵(size_out,size_in)。我一直在寻找类似的问题,但他们的解决方案都无法帮助我。

这是我的第一次尝试

我通过消除内部循环来向量化这段代码:

我的问题是:如何矢量化外循环?

我不确定 reshape&permute 或 bsxfun 的组合在这里是否有帮助。

提前致谢。

0 投票
1 回答
169 浏览

matlab - 如何向量化两个矩阵之间的距离?

我正在构建一个 K-最近邻分类器,我想一次完成所有距离计算(这也会有所帮助,因为未矢量化的版本需要很长时间才能运行)。

我有一个大小为 28000 个示例 x 784 个特征的测试数据集,我有一个大小为 42000 个示例 x 784 个特征的训练数据集。回答我的问题的代码应该生成一个大小为 28000 x 42000 的矩阵,其中每一行都包含从该测试示例到每个 42000 个训练示例的距离。

我想出的最好方法是使用 sum 和 bsxfun 一次计算每个测试示例的所有距离,但我仍然需要遍历所有 28000 个示例,而且正如我之前所说,这需要一段时间。

0 投票
1 回答
521 浏览

matlab - bsxfun 循环中的行减法

我有一个D包含 98 行和 2 列的文本文件。看起来像这样:

10 0.261344
11 0.456167
12 0.668595
2 0.481754
...等

我有另一个M17 行和 2 列的 excel 文件。
我想从第一行中减去所有行的值,然后从 2 中减去,等等。所以我得到这样的结果:

10-11 -0.194823
10-12 -0.407251
...等

换句话说,第一行和所有其余部分之间的区别,第二行和所有其余部分之间的区别..不包括那些第一列与第二个 M excel 文件第一列具有相同值的行。与 81 行相比,这完全不同。

我一直在尝试使用这个:

%当我检查这个时它只给出一个循环全零(98,1)而我需要(((98-17)^2,1)。我需要改变,表达式的最后一部分得到我想要的,但我'我坚持使用 bsxfun。我不知道如何做出正确的表达式来减去所有行。

我是 Matlab 的新手,任何帮助将不胜感激。另外,如果您可以建议一些手册或教程,除了 mathworks 帮助。非常感谢。