问题标签 [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 - 内核中最小距离的矢量化
我有一个 Nx2 数组K1
,其中包含 N 个关键点的位置和一个 3 维 WxHx3 数组Kart1(width,height,coordinates)
,它将坐标映射到图像的每个像素。对于中的每个关键点,K1
我想读取像素的位置Kart1
并评估其周围 3x3 内核中的坐标(搜索最小值/最大值或计算平均值),并为 中的当前像素分配一个值KPCoor1
。
我目前的方法如下所示:
它运行,但很丑,我怀疑它正在做我想做的事。我对这件事的“多维性”有点困惑,不知道评估内核的许多函数,也想不出一种方法来使用矢量化函数bsxfun()
或逻辑运算(意味着我被卡住了,我的大脑是干燥的 :/)
关于如何消除这些循环/更正代码的任何建议?
matlab - Matlab中大型非稀疏矩阵的高效运算
我需要在 Matlab 中操作大的 3-dim 非稀疏矩阵。使用纯矢量化会产生较长的计算时间。因此,我尝试将操作拆分为 10 个块,然后解析结果。当我看到纯矢量化并不能很好地适应下图中显示的数据大小时,我感到很惊讶。
我包括了这两种方法的一个例子。
因此,我想知道是否有任何其他方法可以使 Matlab 中的大矩阵运算更有效。我知道这是一个相当广泛的问题,但我会冒险:)
编辑:
使用@Shai 的实现
时间是:
performance - 成对 L2 距离计算的优化
我需要帮助优化这个循环。matrix_1
是一个 ( n
x 2) int 矩阵并且matrix_2
是一个 ( m
x 2), m
&n
非常。
我需要M2_Index_Dist
提供一个 ( (n*m)
x 2) 矩阵,matrix_2
其中第一列中的索引和第二列中的距离。
输出示例:
matlab - 通过置换避免 matlab 脚本中的“for”循环
我有一个代码如下:
当 Ne > 1000 时,它运行非常缓慢。
我阅读了matlab文档,发现permute函数是一种可能的加速方法。但是我试了一整天,失败了。
这是我的代码,我不知道出了什么问题。
arrays - 向量化从一个单独的向量中减去多个向量
我正在尝试矢量化或使以下代码更有效:
代码的目的是将值 X 与 x (dxcp) 的可接受值数组进行比较,并将 X 分配给数组 dxcp 中最接近的值。例如:
X 等于 9,dxcp 数组为:[ 1, 2, 3, 6, 10, 20]。第二行会将 X 更改为等于 10。
我正在尝试更改我的脚本,以便可以将 X 作为数字数组输入,并且想知道使上述代码适用于这种情况的最有效方法是什么。当然我可以使用:
但我有一种感觉,必须有一种方法可以更有效地完成这项工作。干杯,nzbru。
arrays - 将 bsxfun 与匿名函数一起使用
在尝试理解 bsxfun 函数后,我尝试在脚本中实现它以避免循环。我正在尝试检查数组中的每个单独元素是否包含在一个矩阵中,返回一个与分别包含 1 和 0 的初始数组大小相同的矩阵。我创建的匿名函数是:
x 是每个说将包含“接受值”的矩阵。y 是输入数组。到目前为止,我已经尝试以这种方式使用 bsxfun 函数:
我知道 myfunction 等于匿名函数的句柄,并且 bsxfun 可以用来完成这个我只是不明白以下错误的原因:
我正在使用以下测试数据:
并希望输出为:
干杯,NZBRU。
编辑:达到 15 代表所以我更新了答案
python - 使用 @times 将 bsxfun 转换为 numpy
这是我在 Octave 中的代码:
代码的 bsxfun 部分产生逐元素乘法,所以我认为这numpy.multiply(X*Y, X)
可以解决问题,但我遇到了一个例外。当我做了一些研究时,我发现逐元素乘法不适用于 Python 数组(特别是如果 X 和 Y 的类型为“numpy.ndarray”)。所以我想知道是否有人可以对此进行更多解释——即,将类型转换为不同类型的对象工作?Octave 代码有效,所以我知道我没有线性代数错误。我假设 bsxfun 和 numpy.multiply 实际上并不等效,但我不确定为什么任何解释都会很好。
我能够找到一个网站!这将 Octave 提供给 Matlab 函数转换,但在我的情况下似乎没有帮助。
performance - bsxfun implementation in matrix multiplication
As always trying to learn more from you, I was hoping I could receive some help with the following code.
I need to accomplish the following:
1) I have a vector:
2) and a matrix:
I need to be able to multiply each
value from x
with every
value of A
, this means:
This will give me this new_matrix
of size (12*m x n)
assuming A (mxn)
. And in this case (12*4x3)
How can I do this using bsxfun
from matlab? and, would this method be faster than a for-loop
?
Regarding my for-loop
, I need some help here as well... I am not able to storage each "new_matrix"
as the loop runs :(
Thanks in advance!!
EDIT: After the solutions where given
First solution
Output:
Second solution
Output:
arrays - 3D 数组中的维度逻辑索引
假设我有一个stack
维度为 NxMxR 的数组。我想在给定维度上使用逻辑索引来更新其值,而不使用临时变量。
使用临时变量的示例:
请注意,如果整个数组的条件相同,但它会随着R
维度而变化,这将是微不足道的。bsxfun
如果我只想以如下语法减去阈值,那将是合适的:
我发现临时变量的使用很笨拙,并且找不到定义函数的正确方法bsxfun
来执行循环的功能。
有人有建议吗?
matlab - 根据matlab中的对角线值,按升序排列矩阵的对角线值,而不是对角线值
输入矩阵:
预期输出矩阵:
对于给定的矩阵 R={r(i,j)},以下是对输入矩阵进行的 2 次操作:
1.我们按升序排列对角线值。(即,对于小值,排名 1,对于下一个小值,排名 2,依此类推)
2.除了对角单元格之外,我们根据对角线值对剩余值进行排序。(即对角线值排名赋予其他矩阵值)
我试过的源代码:
我得到的输出矩阵: