![](/img/trans.png)
[英]How to consider the value of a vector is in specific range of values of another matrix in 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.