2012-07-11 81 views
1

我得到了這個代碼MATLAB:背後BITAND邏輯,並得到所有可能的狀態

m0=0.8; 
m1=1.2; 
k=6; %where k can take values between 2 and 10; 
kbar=2^k; 
g_m = [0:(kbar-1)]; 

for i = 1: (kbar) 
    g=1; 
    for j=0:(kbar-1) 
    if(bitand(g_m(i),2^j))~=0 
     g=g*m1; 
    else 
     g=g*m0; 
    end 
    end 
    g_m(i)=g %results in a 1xN vector where N = all the possible states 
end 

我的問題是爲什麼bitand功能,可以生成所有可能的「狀態」? 我不是很確定,如果我真的瞭解位背後的邏輯,除了搜索它的值是否爲bit = 1,因此ans=1

+0

什麼是'kbar'? – 2012-07-11 09:18:51

+0

抱歉,我的意思是k而不是kbar – Plug4 2012-07-11 17:03:44

+0

您可能想編輯問題以解決此問題,並避免進一步混淆 - 只需點擊上面的「|編輯」鏈接即可。 – 2012-07-11 17:22:16

回答

1

bitand取2個值,將它們轉換爲二進制,在兩個值之間進行邏輯與,並將結果作爲十進制數作爲邏輯與返回。所以對於給定的2個數字,它只返回一個數值

+0

好,但爲什麼'bitand'允許我獲得所有可能的狀態? – Plug4 2012-07-11 18:11:05

+1

由於您所在的循環數爲2,您將獲得所有可能的狀態。 – 2012-07-12 08:44:08

+0

執行的代碼與上面使用'bitand'命令暗示Hadamard產品的代碼類似嗎? – Plug4 2012-07-13 03:50:04