从网上看到一个抗工频干扰的算法,不懂其原理,请教大家
本帖最后由 yht0312 于 2015-2-14 15:32 编辑异频测量仪器,一般输出45HZ和55HZ等信号进行试品的测量,目的是为了避免50HZ信号的干扰,我能想到的办法就是用傅里叶来分析了,可是看到下图中的算法我迷茫了,这是什么算法?出自何处呢?请知道的大侠指教指教。
工作后,看到公式就头疼 cumtgao 发表于 2015-2-14 15:43
工作后,看到公式就头疼
呵呵我们公司的工作涉及到很多公式,没办法。。。也是硬着头皮学习。 yht0312 发表于 2015-2-14 15:53
呵呵我们公司的工作涉及到很多公式,没办法。。。也是硬着头皮学习。
我能告诉你我这边有一部分人还要写论文吗{:lol:} 哥不写{:lol:} wye11083 发表于 2015-2-14 15:55
我能告诉你我这边有一部分人还要写论文吗 哥不写
呵呵差不多,我们单位有时也要帮客户些论文!搞死! 怎么找到楼主图片的内容? 楼主图用的是dft,他们公司的算法很简单的,不能任意频率抗干扰的 最新的1hz选频也只能整数点频率抗干扰,你们公司想入这行可以找我 看LZ的算法,和SDR的零中频的混频器原理一样的,使用4倍采样率采样,然后得出IQ两路直流信号 这相当于单点DFT变换, 等效于一个窄带滤波器 dellric 发表于 2015-2-14 22:40
这相当于单点DFT变换, 等效于一个窄带滤波器
这个算法有自己的名称吗?我查查相关资料,谢谢您了! 3DA502 发表于 2015-2-14 20:45
看LZ的算法,和SDR的零中频的混频器原理一样的,使用4倍采样率采样,然后得出IQ两路直流信号 ...
这个算法有自己的名称吗?我查查相关资料,谢谢您了! again 发表于 2015-2-14 19:28
楼主图用的是dft,他们公司的算法很简单的,不能任意频率抗干扰的
但是效果很好 huike 发表于 2015-2-26 10:03
但是效果很好
串联谐振升压就不太好使了 这个问题其实可以表述为:信号为频率已知但幅度和相位未知的正弦波,淹没在干扰和噪声中,现测量到一组值,要求根据测量值估计信号的幅度和相位,这个问题可以通过最小二乘来求得。假设信号x(t) = a*cos(2*pi*f*t)+b*sin(2*pi*f*t),噪声为n(t),那么测量值为y(t) = x(t) + n(t),以采样频率fs采样后得到N个采样值y(k) = x(k) + n(k) = a*cos(2* pi * k * f/fs )+b*sin(2*pi*k*f/fs) + n(k),最小二乘解是
^T = (A^T * A)^-1 * A^T*Y,其中A = ,Y=,估计出a,b后,就可以计算出幅度和相位了。
例子:信号频率为45.678Hz,幅度为0.9,相位为10度,干扰信号为50Hz,幅度为10的正弦波,不加噪声。Matlab代码仿真最终估计出来的幅度为0.89846,相位为9.7638度
f = 45.678; % 信号频率
fi = 50;% 干扰信号频率
fs = 150; % 采样率
N = 2048; % 采样点数,采样越多,估计结果越精确
t = ' / fs;
x = 0.9 * sin(2 * pi * f * t + 10 * (pi / 180)); % 原信号
xi = 10 * sin(2 * pi * fi * t); % 干扰信号
xn = 0 * randn(N,1); % 噪声
y = x + (xi + xn); % 被干扰和噪声污染的测量信号
% 最小二乘
A = ; % 构造矩阵A
result = (A' * A)^-1 * A' * y;% 最小二乘,求出a和b
xp = result(1) * cos(2*pi*f*t) + result(2) * sin(2*pi*f*t);% 根据估计出来的参数重构信号
plot(, '.-'); % 将测量信号,原信号,重构后的信号画在同一幅图中方便比较
amp = sqrt(result(1)^2 + result(2)^2);
phase = atan(result(1) / result(2)) * 180 / pi; at90s 发表于 2015-2-26 23:20
这个问题其实可以表述为:信号为频率已知但幅度和相位未知的正弦波,淹没在干扰和噪声中,现测量到一组值
非常感谢at90s详细的解答!这回明白了,我再仔细研究研究。。。。感谢!感谢! 看到公式,雷诀不爱 at90s 发表于 2015-2-26 23:20
这个问题其实可以表述为:信号为频率已知但幅度和相位未知的正弦波,淹没在干扰和噪声中,现测量到一组值
result = (A' * A)^-1 * A' * y;% 最小二乘,求出a和b
xp = result(1) * cos(2*pi*f*t) + result(2) * sin(2*pi*f*t);% 根据估计出来的参数重构信号
这两句要怎么理解,result(1)/result(2)是怎么得到的呀
翻翻我发的三点算法吧精度比这高几个数量极, clear all;clc N=2048; fs=150; f=45.678; a=0.9; ph=10; f2=50; a2=10; ph2=0; dc=0.123; t=0:N-1; x=a*sin(2*pi*f*t/fs+ph*pi/180)+dc; x=x+a2*sin(2*pi*f2*t/fs+ph2*pi/180); xfft=fft(x,N); y=abs(xfft); =max(y(2:N/2)); k=k+1; z1=xfft(k)-(xfft(k-1)+xfft(k+1))/2; z2=xfft(k+1)-(xfft(k)+xfft(k+2))/2; ka=abs(z1)/abs(z2); r=(2-ka)/(1+ka); fo=(k-1+r)*fs/N ao=2*pi*r*(1-r*r)*(abs(z1))/(N*sin(r*pi)) pho=(angle(z1)-pi*r)*180/pi+90 y(k) = 0; y(k+1) = 0; y(k-1) = 0; y(k+2) = 0; %=max(y(2:N/2)); k=round(f/fs*N); k=k+1; z1=xfft(k)-(xfft(k-1)+xfft(k+1))/2; z2=xfft(k+1)-(xfft(k)+xfft(k+2))/2; ka=abs(z1)/abs(z2); r=(2-ka)/(1+ka); fo2=(k-1+r)*fs/N ao2=2*pi*r*(1-r*r)*(abs(z1))/(N*sin(r*pi)) pho2=(angle(z1)-pi*r)*180/pi+90 -------------------------------------------------- fo = 50.000000021196293 ao = 9.999997448495478 pho = -5.311588685685820e-05 fo2 = 45.677997103660715 ao2 = 0.900030578308722 pho2 = 10.006983717544131 只有2G网发个贴真辛苦
页:
[1]