![](/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.