问题标签 [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 回答
152 浏览

matlab - 内核中最小距离的矢量化

我有一个 Nx2 数组K1,其中包含 N 个关键点的位置和一个 3 维 WxHx3 数组Kart1(width,height,coordinates),它将坐标映射到图像的每个像素。对于中的每个关键点,K1我想读取像素的位置Kart1并评估其周围 3x3 内核中的坐标(搜索最小值/最大值或计算平均值),并为 中的当前像素分配一个值KPCoor1

我目前的方法如下所示:

它运行,但很丑,我怀疑它正在做我想做的事。我对这件事的“多维性”有点困惑,不知道评估内核的许多函数,也想不出一种方法来使用矢量化函数bsxfun()或逻辑运算(意味着我被卡住了,我的大脑是干燥的 :/)

关于如何消除这些循环/更正代码的任何建议?

0 投票
1 回答
200 浏览

matlab - Matlab中大型非稀疏矩阵的高效运算

我需要在 Matlab 中操作大的 3-dim 非稀疏矩阵。使用纯矢量化会产生较长的计算时间。因此,我尝试将操作拆分为 10 个块,然后解析结果。当我看到纯矢量化并不能很好地适应下图中显示的数据大小时,我感到很惊讶。

在此处输入图像描述

我包括了这两种方法的一个例子。

因此,我想知道是否有任何其他方法可以使 Matlab 中的大矩阵运算更有效。我知道这是一个相当广泛的问题,但我会冒险:)


编辑:

使用@Shai 的实现

时间是:

在此处输入图像描述

0 投票
2 回答
186 浏览

performance - 成对 L2 距离计算的优化

我需要帮助优化这个循环。matrix_1是一个 ( nx 2) int 矩阵并且matrix_2是一个 ( mx 2), m&n非常。

我需要M2_Index_Dist提供一个 ( (n*m)x 2) 矩阵,matrix_2其中第一列中的索引和第二列中的距离。

输出示例:

0 投票
2 回答
239 浏览

matlab - 通过置换避免 matlab 脚本中的“for”循环

我有一个代码如下:

当 Ne > 1000 时,它运行非常缓慢。

我阅读了matlab文档,发现permute函数是一种可能的加速方法。但是我试了一整天,失败了。

这是我的代码,我不知道出了什么问题。

0 投票
1 回答
123 浏览

arrays - 向量化从一个单独的向量中减去多个向量

我正在尝试矢量化或使以下代码更有效:

代码的目的是将值 X 与 x (dxcp) 的可接受值数组进行比较,并将 X 分配给数组 dxcp 中最接近的值。例如:

X 等于 9,dxcp 数组为:[ 1, 2, 3, 6, 10, 20]。第二行会将 X 更改为等于 10。

我正在尝试更改我的脚本,以便可以将 X 作为数字数组输入,并且想知道使上述代码适用于这种情况的最有效方法是什么。当然我可以使用:

但我有一种感觉,必须有一种方法可以更有效地完成这项工作。干杯,nzbru。

0 投票
2 回答
1187 浏览

arrays - 将 bsxfun 与匿名函数一起使用

在尝试理解 bsxfun 函数后,我尝试在脚本中实现它以避免循环。我正在尝试检查数组中的每个单独元素是否包含在一个矩阵中,返回一个与分别包含 1 和 0 的初始数组大小相同的矩阵。我创建的匿名函数是:

x 是每个说将包含“接受值”的矩阵。y 是输入数组。到目前为止,我已经尝试以这种方式使用 bsxfun 函数:

我知道 myfunction 等于匿名函数的句柄,并且 bsxfun 可以用来完成这个我只是不明白以下错误的原因:

我正在使用以下测试数据:

并希望输出为:

干杯,NZBRU。

编辑:达到 15 代表所以我更新了答案

0 投票
3 回答
7729 浏览

python - 使用 @times 将 bsxfun 转换为 numpy

这是我在 Octave 中的代码:

代码的 bsxfun 部分产生逐元素乘法,所以我认为这numpy.multiply(X*Y, X)可以解决问题,但我遇到了一个例外。当我做了一些研究时,我发现逐元素乘法不适用于 Python 数组(特别是如果 X 和 Y 的类型为“numpy.ndarray”)。所以我想知道是否有人可以对此进行更多解释——即,将类型转换为不同类型的对象工作?Octave 代码有效,所以我知道我没有线性代数错误。我假设 bsxfun 和 numpy.multiply 实际上并不等效,但我不确定为什么任何解释都会很好。

我能够找到一个网站!这将 Octave 提供给 Matlab 函数转换,但在我的情况下似乎没有帮助。

0 投票
5 回答
1753 浏览

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:

0 投票
2 回答
156 浏览

arrays - 3D 数组中的维度逻辑索引

假设我有一个stack维度为 NxMxR 的数组。我想在给定维度上使用逻辑索引来更新其值,而不使用临时变量。

使用临时变量的示例:

请注意,如果整个数组的条件相同,但它会随着R维度而变化,这将是微不足道的。bsxfun如果我只想以如下语法减去阈值,那将是合适的:

我发现临时变量的使用很笨拙,并且找不到定义函数的正确方法bsxfun来执行循环的功能。

有人有建议吗?

0 投票
2 回答
277 浏览

matlab - 根据matlab中的对角线值,按升序排列矩阵的对角线值,而不是对角线值

输入矩阵:

预期输出矩阵:

对于给定的矩阵 R={r(i,j)},以下是对输入矩阵进行的 2 次操作:

1.我们按升序排列对角线值。(即,对于小值,排名 1,对于下一个小值,排名 2,依此类推)

2.除了对角单元格之外,我们根据对角线值对剩余值进行排序。(即对角线值排名赋予其他矩阵值)

我试过的源代码:

我得到的输出矩阵: