繁体   English   中英

如何在MATLAB中的另一个向量的值范围内找到一个向量的值

[英]How to find a value of one vector, in a range of value in another vector in matlab

我有一个大小为54000 x 1的向量A和一个大小为54000 x 1的向量B,这是A元素的标准偏差。从另一面来看,我有一个大小为300000 x 1的向量C。现在,我想查找向量C的每个元素对应于向量A的哪一行具有可接受范围3 *标准偏差? 我已经写了下面的代码,它对于小向量很好用,但是对于大向量来说我太慢了!

    for i=1:length(A)
      L=A(i,1)- 3*B(i,1);
      U=A(i,1)+ 3*B(i,1);
      inds{i,1} = not(abs(sign(sign(L - C) + sign(U - C))));
     end

有人知道如何使此代码更快,或者有人知道其他解决方案吗? 谢谢。

MATLAB是Matrix Laboratory(矩阵实验室)的首字母缩写词,其开发目的是简化并加快矩阵(矢量)计算。 与C或任何其他编程语言相比,使用矩阵时,您通常可以跳过for循环。 对于您的代码,您应该可以跳过for循环并按以下步骤进行:

  L = A - 3*STD;
  U = A + 3*STD;
  inds = not(abs(sign(sign(L - C) + sign(U - C))));

记住, i意思是Matlab中的复数。 但是不知道它是否会影响速度。

编辑:

作为单元格获取结果:

inds = num2cell(inds)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM