簡體   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