相位旋轉演算法
① [100分]請教關於星盤的相位和角度演算法
簡單跟你說吧 好的相位指的就是0度(合相) 60度(半拱) 120度(相拱)的相位 不好的就是 90 和180 一個刑 一個沖
② 什麼是相位
占星手冊 什麼是相位
2005/09/02
如果將人生比擬為一出戲相位就像戲劇情節,它是你與他人彼此的互動狀況
相位的演算法:
相位是兩顆行星間與星盤圓心的夾角度數,如:分別將太陽、月亮與圓心連成一線,兩線的夾角,即為相位。相位佳時,即使行星落入星座不佳,當事人也能夠逢凶化吉。若相位不佳,行星落入的星座也不佳,就要以其它行星及相位補救了。
相位的種類:
合 相:
兩星近乎重迭,與星盤圓心夾角為0度時,即是合相。這是非常有力的相位,它具有集中且強烈的作用,可增強兩星的力量。
六分相:
兩顆行星與星盤圓心夾角為60度時,即為六分相。這是一個只要肯努力,即有好機會的調和相位。
四分相:
兩顆行星與星盤圓心夾角為90度時,即為四分相。這是一個不調和的相位。當事人必須花費許多心力,才能改善不調和的事。
三分相:
兩顆行星與星盤圓心夾角為120度時,即為三分相。這是一個讓兩顆星互相協助,順利推動事情進展的調和相位。
對分相:
兩顆行星與星盤圓心夾角為180度時,即為對分相。這是一個引起緊張與對立的不調和相位,但有時物極必反,反而是個有奇跡出現的相位。
③ 如何用FFT演算法轉換成相位差
%% FFT
f0 = 50;
X=fft(x); % x是信號離散值
N = length(x);
X=X(1:N/2);
Xabs=abs(X);
for i= 1 : m % m 是諧波次數
[Amax,index]=TriFind(Xabs,floor((i*f0-15)/fsN),ceil((i*f0+15)/fsN)); % 如果只求基波可以改成求最大值的 [Amax,index]=max(Xabs);
if(index==-1)
Fn(i) = 0;
An(i) = 0;
Pn(i) = 0;
else
if(Xabs(index-1) > Xabs(index+1))
a1 = Xabs(index-1) / Xabs(index);
r1 = 1/(1+a1);
k01 = index -1;
else
a1 = Xabs(index) / Xabs(index+1);
r1 = 1/(1+a1);
k01 = index;
end
Fn(i) = (k01+r1-1)*fs/N; %頻率校正 fs 為采樣頻率
An(i) = 2*pi*r1*Xabs(k01)/(N*sin(r1*pi)); % 幅值校正
Pn(i) = phase(X(k01))-pi*r1; % 相位校正
% Pn(i,3) = mod(Pn(i),pi);
end
end
這是我寫的一個FFT求取諧波參數的程序,Pn中存的就是各次諧波的相位,要是做相位差,分別對兩個信號求取相位,再差就行了;如果是非同步采樣,可能誤差較大,需要加窗改進;
有問題可以追問。
④ NCO的運算公式
Walther JS於1971年提出了統一的CORDIC形式。假定初始向量V1(x1 ,y1)旋轉角度θ後得到向量V2(x2,y2):
即:
若每次旋轉的角度θ是正切值為2 的倍數,即θi=arctan(2-i),則cosθi=(1+2-2i)-1/2 。假設以δi代表矢量的旋轉方向,+1表示逆時針旋轉,-1表示順時針旋轉,故第i 步旋轉可用下式表示:
其中:(1+2-2i)-1/2為模校正因子。對於字長一定的運算,該因子是一個常數,用K表示,以16 bits字長為例,則:
可見,迭代運算不能使幅值比例因子恆為1。為了抵消因迭代產生的比例因子的影響,可將輸入數據X,Y校正後再參與運算,以避免在迭代運算中增加校正運算,降低CORDIC演算法的速度。由此運算迭代式可以簡化成:
公式(5)運算僅通過加法器及移位器就可以實現。此外,若用Zi表示第i次旋轉時與目標角度之差, 則:
經過n次旋轉後,式(5)的n次迭代可以得到以下結果:
本文介紹的數控振盪器的設計是在式(7)的基礎上,給定x0=K ,y0=0,則迭代結果為:
將所需產生的角度值作為z0輸入,通過式(5)、(6)的迭代運算,迭代結果輸出的xn和yn就是所需要的三角函數值。
數控振盪器的FPGA實現
圖1是數控振盪器的頂層電路。由圖可見,頻率控制字寄存器將接收到的的頻率控制字送入相位累加器,相位累加器對系統時鍾進行計數,每到達輸入頻率控制字的值即對相位進行累加,隨後將累加值送入相位相加器,與相位控制字寄存器接收到的初始相位進行相加,得到當前的相位值。其中,相位累加器是決定NCO性能的一個關鍵模塊,可以利用FPGA器件的進位鏈實現快速、高效的電路結構。然而,由於進位鏈必須位於臨近的邏輯陣列塊CLB和邏輯單元LC內,所以長的進位鏈會減少其它邏輯使用的布線資源;同時,過長的進位鏈也會制約整個系統速度的提高。因此,設計中採用進位鏈和流水線技術相結合的辦法。所謂流水線技術,即把在一個時鍾內要完成的邏輯操作分成幾步較小的操作,並插入幾個時鍾周期來提高系統的數據吞吐率。採用以上做法實現的相位累加器既能保證具有較高的資源利用率,又能大幅提高系統的性能和速度。
經過上述相位的處理之後,即可獲得具有所設定初始相位的一定頻率的正餘弦相位序列,將此序列送入基於CORDIC演算法的波形發生器,最終獲得兩路正交的正餘弦輸出序列。