bsxfun相关内容
我有一个相对较大的矩阵NxN(N〜20,000)和一个Nx1向量,用于标识必须分组在一起的索引. 我想将矩阵的各个部分加在一起,原则上可以有不同数量的元素和不相邻的元素. 我很快写了一个双for循环,它可以正常工作,但是效率很低.探查器将这些循环识别为我的代码中的瓶颈之一. 我试图找到一种智能的矢量化方法来解决该问题.我研究了arrayfun,cellfun和bsxfun函数,并寻找解
..
我真的需要这个帮助. 我必须使用矩阵L1和L2,它们的大小均为(500x3). 首先,我计算L1的每个列中每个元素与L2的差值,如下所示: lib1 = bsxfun(@minus, L1(:,1)',L2(:,1)); lib1=lib1(:); lib2 = bsxfun(@minus, L1(:,2)',L2(:,2)); lib2=lib2(:); lib3 = bsxf
..
我是菜鸟,我在Slinding Window的堆栈上发现了非常零散的信息. 我有一个mXn矩阵,其中m是固定的(纬度,经度,ax,ay,az),n可以根据不同的对数进行更改. 1)如何在不提取向量然后对其进行分析的情况下仅为z创建滑动窗口? 2)如果我要保存az标准偏差超过定义的阈值的所有行,我该怎么做? 3)如果日志长度不固定,我该如何处理? (例如,一个文件包含932行
..
我有一个很大的乘法和求和运算,需要尽可能高效地实现.到目前为止,我发现的最佳方法是MATLAB中的bsxfun,我将问题表达为: L = 10000; x = rand(4,1,L+1); A_k = rand(4,4,L); tic for k = 2:L i = 2:k; x(:,1,k+1) = x(:,1,k+1)+sum(sum(bsxfun(@times,A_k(
..
我有2个嵌套循环,它们执行以下操作: 获取两行矩阵 检查索引是否满足条件 如果这样做,请计算两行之间的xcorr并将其放入新向量中 找到子向量的最大值的索引,并用该值替换LAG矩阵的元素 我不知道如何通过向量化或其他方式来加快此代码的速度. b=size(data,1); F=size(data,2); LAG= zeros(b,b); for i=1:b f
..
在复杂的矩阵乘法之后,我需要帮助找到一个矩阵的索引位置和两个向量,请耐心阅读我的第一篇,最后我的问题来了. 我有两个矩阵L1和L2: L1 = firstMatrix; L2 = secondMatrix; 我需要计算L1中每个单个值与所有L2值的差异(列方式),同样,以列方式,如下所示: 第一步 lib1 = bsxfun(@minus, L1(:,1)',L2(:,
..
我有一个数据集,X是m x 2,三个向量存储在一个矩阵C = [c1'; c2'; c3']中,它是3 x 2.我正在尝试对我的代码进行矢量化处理,该代码针对X中的每个数据点,找到C中的哪个矢量最接近(平方距离).我想从X中的每个矢量(行)中减去C中的每个矢量(行),从而得到m x 6或3m x 2元素之间的差值的m x 6或3m x 2矩阵c5>.我当前的实现一次在X中执行这一行: for
..
我需要在Matlab中的3维大稀疏矩阵中进行运算.使用纯矢量化会产生较高的计算时间.因此,我尝试将操作分成10个块,然后解析结果. 当我看到纯向量化不能很好地缩放数据大小时,我感到惊讶,如下图所示. 我提供了这两种方法的示例. % Parameters: M = 1e6; N = 50; L = 4; K = 10; % Method 1: Pure vectorization
..
我需要在3D的某个点附近访问多个索引. 例如,对于点(x1,y1,z1),我需要获取其3x3x3邻域的所有索引,以使(x1,y1,z1)居中.对于3号邻域,我用 [x,y,z] = meshgrid(-1:1,-1:1,-1:1); x_neighbors = bsxfun(@plus,x,x1); y_neighbors = bsxfun(@plus,y,y1); z_neighb
..
我很快就会有一些新学生,他们将编写MATLAB代码.他们是MATLAB的新手,但是他们有使用Java和C ++进行编码的经验. 我要让他们通过入门 MATLAB帮助部分.另外,我想给一个小教程,目的是防止他们犯人们在切换到MATLAB时犯的一些最常见的错误(例如"MATLAB从1开始计数"),并向他们展示一些他们可能不会意识到的功能.请注意何时来自其他语言(例如“您可以直接从数组中减去标量,
..
假设我具有以下功能: function x = printAndKeepX(x, y) x y end ,我像这样调用bsxfun: bsxfun(@printAndKeepX, 1:4, 1); 实际上是逐个元素,我希望printAndKeepX被调用4次,而(x, y)的参数分别是(1, 1),(2, 1),(3, 1)和(4, 1) .但是输出显示,仅在(
..
这是做什么的? u = [5 6]; s = [1 1]; data1 =[randn(10,1) -1*ones(10,1)]; data2 =[randn(10,1) ones(10,1)]; data = [data1; data2]; deviance = bsxfun(@minus,data,u); deviance = bsxfun(@rdivide,de
..
非数值数据是否等于bsxfun? 例如,我想比较存储在两个单元格数组中的所有字符串对: >> a = {'aa', 'bb', 'cc'}; >> b = {'dd', 'aa'}; >> bsxfun( @strcmp, a, b' ); % not working for cells :-( 解决方案 恐怕单元格数组没有这样的等效项:-( 据我所知,您可以: 遵循
..
我有以下代码: n = 10000; s = 100; Z = rand(n, 2); x = rand(s, 1); y = rand(s, 1); fun = @(a) exp(a); 原则上,匿名函数f可以具有其他形式.我需要创建两个数组. 首先,我需要使用通用元素创建大小为n x s x s的数组 fun(Z(i, 1) - x(j)) * fun(Z(i, 2)
..
For循环似乎非常慢,所以我想知道是否可以使用bsxfun对下所示代码中的嵌套循环进行矢量化,也许还可以引入GPU. 代码 %// Paramaters i = 1; j = 3; n1 = 1500; n2 = 1500; %// Pre-allocate for output LInc(n1+n2,n1+n2)=0; %// Nested Loops - I for x =
..
我有一个方矩阵A(nxn).我想将此矩阵的k次幂创建为nxnxk多维矩阵(不是逐个元素,而是矩阵的实际幂),即得到[A^0 A^1 A^2..A^k].这是用于矩阵盒的各种vandermonde. 我可以通过循环来做到这一点,但是这很烦人而且很慢.我尝试使用bsxfun,但是没有运气,因为我可能在这里错过了一些东西. 这是我做的一个简单循环: for j=1:1:100
..
作为进行了评论由史蒂夫·爱丁斯, bsxfun 用于较小的数组,而对于大型数组具有相似的速度: 在R2016b中,在大多数情况下,隐式扩展的运行速度与bsxfun一样快或更快.隐式扩展的最佳性能提升是在较小的矩阵和数组大小的情况下进行的.对于较大的矩阵,隐式扩展的速度通常与bsxfun相同. 此外,展开所沿的维度可能会产生影响: 第一维扩展时,运算符可能不如bsxfun快.
..
我想在这里主要研究两件事- 与 bsxfun 一起使用的六个内置关系操作: @eq (equal) , @ne (not-equal) , @lt (less-than) , @le (less-than or equal) , @gt (greater-than) 和 @ge (greater-than or equal) .很多时候,我们将它们用于浮点数并作为关系运算,它们输出逻辑数组.
..
我需要在matlab中计算2个矩阵之间的欧式距离.目前,我正在使用bsxfun并按如下方式计算距离(我正在附上代码片段): for i=1:4754 test_data=fea_test(i,:); d=sqrt(sum(bsxfun(@minus, test_data, fea_train).^2, 2)); end fea_test的大小是4754x1024,fea_train是68
..
一如既往地向您学习更多,我希望我可以从以下代码中获得一些帮助. 我需要完成以下任务: 1)我有一个向量: x = [1 2 3 4 5 6 7 8 9 10 11 12] 2)和一个矩阵: A =[11 14 1 5 8 18 10 8 19 13 20 16] 我需要能够将x中的each值与A
..