matlab中求信號相位,有沒有什麼好的方法?
01-07
現有一很長,高採樣的正弦或者餘弦信號(從原始連續數據採樣來的離散數據),請問有什麼好方法求該信號的相位?(數據採集不一定從零點開始)
具體應用是已知電流或電壓信號(非連續),信號略有畸變,求相位。
一個簡單的辦法是構造一個沒有lag的,頻率相同的標準信號。然後做兩者的cross-correlation, 然後找出最大的Lag, 看它對應的時間點是什麼。
舉例來說
比如你有信號s2, 相位是-0.35, 那麼你可以構造一個0相位的s1t = [0:127]*0.02;
f = 1.0;
s1 = sin(2*pi*f*t);
s2 = sin(2*pi*f*(t-0.35));
做cross-correlation
&>&> x = xcorr(s1,s2,"coeff");
&>&> tx = [-127:127]*0.02;
沒太看懂,我重新理解下題主看對不對:求同時採樣的兩個同頻率離散信號的相位差。說個思路:
先濾波得到乾淨的兩個正弦信號,歸一化。取其中一個或幾個時間點,代入和角公式聯立求解。再用該點導數去掉無效結果。
推薦閱讀:
※山東大學電氣專業想進江蘇電網?
※請教各位老師用基爾霍夫定律解這個電路?
※西門子1P+N斷路器能否作為家庭總開關使用?
※怎麼解決斷路器越級跳閘的問題?
※為什麼不在同一個帶漏電斷路器下控制接觸器會導致跳閘?