如何在matlab

时间:2015-04-27 05:43:53

标签: matlab vector find

我有一个大小为54000 x 1的矢量A和大小为54000 x 1的矢量B,它是A元素的标准偏差。另一方面,我有矢量C,大小为300000 x 1.现在我想要找到向量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

有谁知道如何更快地制作此代码或者是否有人知道其他解决方案? THX。

1 个答案:

答案 0 :(得分:0)

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)