问题标签 [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.
matlab - bsxfun 在解决一分钟。优化任务
我真的需要这个帮助。
我必须矩阵L1
和L2
,两者都是(500x3)
大小。
首先,我计算L1
from每一列的每个元素的差异L2
如下:
结果就是这个矩阵LBR
。然后我有一个min
问题要解决:
它返回了p
这个问题得到满足的点min
。最后我可以回到我的矩阵L1
并 L2
找到满足这个问题的值的索引位置min
。我这样做如下:
还行吧。但我现在需要的是:
我必须乘以 ,tensor-product
也称为Kronecker product
向量alpha
的LBR
,alpha
给出如下:
而且,Kronecker product
我计算如下:
我现在需要的是:我需要解决同样的min
问题:
但是,这一次,除了找到满足这个问题的索引位置和值之外,我还需要从已经相乘并且满足这个问题的向量中L1
找到单个值的索引位置。我不知道我该怎么做,所以任何帮助都将不胜感激!L2
min
alpha
min
提前致谢!
Ps:如果需要,我可以发布L1
和L2
矩阵。
matlab - 在-空间-矩阵乘法之后查找索引位置。bsxfun 已实施
在复杂的矩阵乘法之后,我需要帮助找到矩阵和两个向量的一些索引位置,请耐心等待,先阅读我的内容,我的问题在最后。
我有两个矩阵L1
和L2
:
我需要计算每个单个值L1
与 的所有值的差异(按列) L2
,再次以按列的形式,按如下方式完成:
第一步
最后我有我的新矩阵LBR
:
现在,我有两个向量alpha
和beta
- 在具有相同步长的封闭域上给出,在这种情况下它们是相同的 -。
我现在需要计算张量积,我可以通过两种方式完成:
第二步
第一种方式:
或者,第二种方式,即通过bsxfun
来自 matlab 的方式:
我的问题:
我需要通过min-distance
以下方式找到,首先,我当然有三个常量:
计算min-distance
如下:
第三步
我非常需要 , 和 的索引位置L1
来L2
解决alpha
这个beta
问题min-distance
。
我尝试了以下方法:
第四步
但它不起作用。我将非常感谢您为我提供的所有帮助!
提前致谢。
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 接收两个向量并输出一个标量时工作。
有没有人有任何想法?
performance - 在 MATLAB 中用 bsxfun 替换 repmat
在以下功能中,我想进行一些更改以使其快速。它本身很快,但我必须在 for 循环中多次使用它,所以需要很长时间。我想如果我用 bsxfun 替换 repmat 会更快,但我不确定。我该怎么做这些替换
它真的可以加快我的功能吗?
performance - 使用 bsxfun 和 GPU 在 matlab 中矢量化嵌套循环
For 循环似乎非常慢,所以我想知道接下来显示的代码中的嵌套循环是否可以使用矢量化bsxfun
,也许也可以引入 GPU。
代码
编辑1: n
也denom
可以假设为常量。
arrays - MATLAB:使用数组输入运行向量输入函数的有效方法
我有一个函数HermitePCECoefficients
,它接受多个参数作为输入,包括一个列向量y
,并输出一个列向量Coefficients
,长度与y
:
现在假设这y
不是一个列向量,而是一个二维数组(矩阵),我想HermitePCECoefficients
在它的每一列上运行,将相应的输出存储在一个数组中。使用for
循环执行此操作简单明了,但需要很长时间:
因此,我投入bsxfun
了工作。由于bsxfun
仅适用于二进制函数,我创建了一个“虚拟”二进制函数 f,它实际上只是一个单一参数的函数:
然后这样使用bsxfun
:
这很好用,而且比for
循环快得多(不用担心omega_f
,它只是一个长度与 中的列数相对应的向量y
)。
问题1:您认为这是bsxfun
在这种情况下使用的正确方法吗?
问题2:也许更好的解决方案是直接修改HermitePCECoefficients
,以便它可以将通用数组y
作为输入。在函数内部,这是唯一需要y
为列向量的行:
weights
和Psi
是两个列向量,所以如果我传递一个数组y
,MATLAB 会抱怨。关于如何修改它的任何建议?
matlab - MATLAB:bsxfun 不清楚。想要加速段之间的最小距离
使用 MATLAB,想象一个 Nx6 数字数组,它表示 N 段,具有 3+3=6 个初始和结束点坐标。
假设我有一个function Calc_Dist( Segment_1, Segment_2 )
将两个 1x6 数组作为输入,并且经过一些操作返回一个标量,即这两个段之间的最小欧几里得距离。
我想计算列表的所有 N 段之间的成对最小距离,但希望避免双循环这样做。
我无法理解 MATLAB 函数的文档bsxfun
,所以我无法完成这项工作。为了一个最小的例子(距离计算显然不正确):
和主要
有什么办法可以做到这一点,还是我被迫使用双循环?
谢谢你的任何建议
matlab - Matlab优化查询,避免那个repmat
这是一个简单的问题,我找不到更好的答案,也许其他人可以!这是代码:
示例变量
示例计算
需要 repmat 感觉不对,但我找不到避免它的方法。
实际上我正在增加^数据,我真的不想遍历两个维度(sims
或data
行)。可以以我选择的任何方式对虚拟数据进行排序,但输出的值必须是nSim
按nRow
矩阵。
欢迎任何想法。谢谢。
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)=0
for all i~=j
。是否有某种替代方法diag
来创建“对角线阵列”?或者,如果我创建n x n x s x s
零数组,有没有办法放在out1
主对角线上?
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。谢谢。