问题标签 [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 投票
1 回答
160 浏览

matlab - bsxfun 在解决一分钟。优化任务

我真的需要这个帮助。

我必须矩阵L1L2,两者都是(500x3)大小。

首先,我计算L1from每一列的每个元素的差异L2 如下:

结果就是这个矩阵LBR。然后我有一个min问题要解决:

它返回了p这个问题得到满足的点min。最后我可以回到我的矩阵L1L2找到满足这个问题的值的索引位置min。我这样做如下:

还行吧。但我现在需要的是:

我必须乘以 ,tensor-product也称为Kronecker product向量alphaLBRalpha给出如下:

而且,Kronecker product我计算如下:

我现在需要的是:我需要解决同样的min问题:

但是,这一次,除了找到满足这个问题的索引位置和值之外,我还需要从已经相乘并且满足这个问题的向量中L1找到单个值的索引位置。我不知道我该怎么做,所以任何帮助都将不胜感激!L2minalphamin

提前致谢!

Ps:如果需要,我可以发布L1L2矩阵。

0 投票
1 回答
172 浏览

matlab - 在-空间-矩阵乘法之后查找索引位置。bsxfun 已实施

在复杂的矩阵乘法之后,我需要帮助找到矩阵和两个向量的一些索引位置,请耐心等待,先阅读我的内容,我的问题在最后。

我有两个矩阵L1L2

我需要计算每个单个值L1与 的所有值的差异(按列) L2,再次以按列的形式,按如下方式完成:

第一步

最后我有我的新矩阵LBR

现在,我有两个向量alphabeta- 在具有相同步长的封闭域上给出,在这种情况下它们是相同的 -。

我现在需要计算张量积,我可以通过两种方式完成:

第二步

第一种方式

或者,第二种方式,即通过bsxfun来自 matlab 的方式:

我的问题:

我需要通过min-distance以下方式找到,首先,我当然有三个常量:

计算min-distance如下:

第三步

我非常需要 , 和 的索引位置L1L2解决alpha这个beta问题min-distance

我尝试了以下方法:

第四步

但它不起作用。我将非常感谢您为我提供的所有帮助!

提前致谢。

0 投票
0 回答
99 浏览

matlab - Matlab:寻找一种方法来概括 bsxfun 用于接收两个向量并输出一个标量的函数

例如,给定 X,R^d 中的点列表 N,(Nxd 矩阵)。那么 X = [x_1;x_2;...;x_N]。我想计算点 {x_i} 之间的距离矩阵 D(和 NxN 矩阵)。

如果 d = 1 我可以使用bsxfun

dist标量上由 定义dist = @(x_i,x_j) sqrt( sum((x_i-x_j).^2) )。对于 d = 1,dist接受两个标量并输出一个标量,因此bsxfun可以应用。

我想做的就是让这个从将军d开始。也就是说,我需要一个像 bsxfun 这样的函数,它可以在 dist 接收两个向量并输出一个标量时工作。

有没有人有任何想法?

0 投票
1 回答
710 浏览

performance - 在 MATLAB 中用 bsxfun 替换 repmat

在以下功能中,我想进行一些更改以使其快速。它本身很快,但我必须在 for 循环中多次使用它,所以需要很长时间。我想如果我用 bsxfun 替换 repmat 会更快,但我不确定。我该怎么做这些替换

它真的可以加快我的功能吗?

0 投票
2 回答
704 浏览

performance - 使用 bsxfun 和 GPU 在 matlab 中矢量化嵌套循环

For 循环似乎非常慢,所以我想知道接下来显示的代码中的嵌套循环是否可以使用矢量化bsxfun,也许也可以引入 GPU。

代码

编辑1: ndenom可以假设为常量。

0 投票
2 回答
139 浏览

arrays - MATLAB:使用数组输入运行向量输入函数的有效方法

我有一个函数HermitePCECoefficients,它接受多个参数作为输入,包括一个列向量y,并输出一个列向量Coefficients,长度与y

现在假设这y不是一个列向量,而是一个二维数组(矩阵),我想HermitePCECoefficients在它的每一列上运行,将相应的输出存储在一个数组中。使用for循环执行此操作简单明了,但需要很长时间:

因此,我投入bsxfun了工作。由于bsxfun仅适用于二进制函数,我创建了一个“虚拟”二进制函数 f,它实际上只是一个单一参数的函数:

然后这样使用bsxfun

这很好用,而且比for循环快得多(不用担心omega_f,它只是一个长度与 中的列数相对应的向量y)。

问题1:您认为这是bsxfun在这种情况下使用的正确方法吗?

问题2:也许更好的解决方案是直接修改HermitePCECoefficients,以便它可以将通用数组y作为输入。在函数内部,这是唯一需要y为列向量的行:

weightsPsi是两个列向量,所以如果我传递一个数组y,MATLAB 会抱怨。关于如何修改它的任何建议?

0 投票
2 回答
319 浏览

matlab - MATLAB:bsxfun 不清楚。想要加速段之间的最小距离

使用 MATLAB,想象一个 Nx6 数字数组,它表示 N 段,具有 3+3=6 个初始和结束点坐标。

假设我有一个function Calc_Dist( Segment_1, Segment_2 )将两个 1x6 数组作为输入,并且经过一些操作返回一个标量,即这两个段之间的最小欧几里得距离。

我想计算列表的所有 N 段之间的成对最小距离,但希望避免双循环这样做。

我无法理解 MATLAB 函数的文档bsxfun,所以我无法完成这项工作。为了一个最小的例子(距离计算显然不正确):

和主要

有什么办法可以做到这一点,还是我被迫使用双循环?

谢谢你的任何建议

0 投票
1 回答
123 浏览

matlab - Matlab优化查询,避免那个repmat

这是一个简单的问题,我找不到更好的答案,也许其他人可以!这是代码:

示例变量

示例计算

需要 repmat 感觉不对,但我找不到避免它的方法。

实际上我正在增加^数据,我真的不想遍历两个维度(simsdata行)。可以以我选择的任何方式对虚拟数据进行排序,但输出的值必须是nSimnRow矩阵。

欢迎任何想法。谢谢。

0 投票
1 回答
396 浏览

matlab - 使用带有匿名函数和元素减法的 bsxfun 生成数组 - MATLAB

我有以下代码:

原则上,匿名函数f可以有不同的形式。我需要创建两个数组。

首先,我需要n x s x s使用通用元素创建一个大小数组

在哪里i=1,...n同时j,k=1,...,s。我可以轻松做的是使用 构造矩阵bsxfun,例如

但是然后我需要3D通过将这两个矩阵的每一列逐元素相乘来将它们组合成数组。


在第二步中,我需要创建一个 size 的数组n x 3 x s x s,它从一侧看起来像下面的矩阵

其中i=1,...s, j=1,...s. 我可以用类似的东西循环两个额外的维度

有没有办法避免循环?


在第三步中,假设在获得数组out1(从第一步的输出)之后,我想创建一个out3维度为 的新数组n x n x s x s,其中包含主对角线上的原始数组out1,即out3(i,i,s,s) = out1(i, s, s)and out3(i,j,s,s)=0for all i~=j。是否有某种替代方法diag来创建“对角线阵列”?或者,如果我创建n x n x s x s零数组,有没有办法放在out1主对角线上?

0 投票
1 回答
99 浏览

bsxfun - matlab - 将数组转换为索引值

给定 a = [1, 7] 和 b = [4, 10],我想创建一个新向量 [1:4,7:10]。我可以通过循环来做到这一点,但我正在寻找矢量化解决方案。我尝试通过定义以下函数 fun = @(c,d) c:d 来使用 bsxfun,然后使用 bsxfun(fun, a, b)。它生成 1:4 但不是 7:10。谢谢。