yht0312 发表于 2015-2-14 15:15:51

从网上看到一个抗工频干扰的算法,不懂其原理,请教大家

本帖最后由 yht0312 于 2015-2-14 15:32 编辑

异频测量仪器,一般输出45HZ和55HZ等信号进行试品的测量,目的是为了避免50HZ信号的干扰,我能想到的办法就是用傅里叶来分析了,可是看到下图中的算法我迷茫了,这是什么算法?出自何处呢?请知道的大侠指教指教。

cumtgao 发表于 2015-2-14 15:43:56

工作后,看到公式就头疼

yht0312 发表于 2015-2-14 15:53:05

cumtgao 发表于 2015-2-14 15:43
工作后,看到公式就头疼

呵呵我们公司的工作涉及到很多公式,没办法。。。也是硬着头皮学习。

wye11083 发表于 2015-2-14 15:55:19

yht0312 发表于 2015-2-14 15:53
呵呵我们公司的工作涉及到很多公式,没办法。。。也是硬着头皮学习。

我能告诉你我这边有一部分人还要写论文吗{:lol:} 哥不写{:lol:}

yht0312 发表于 2015-2-14 15:59:08

wye11083 发表于 2015-2-14 15:55
我能告诉你我这边有一部分人还要写论文吗 哥不写

呵呵差不多,我们单位有时也要帮客户些论文!搞死!

ddz123abcdef 发表于 2015-2-14 17:24:37

怎么找到楼主图片的内容?

again 发表于 2015-2-14 19:28:58

楼主图用的是dft,他们公司的算法很简单的,不能任意频率抗干扰的

again 发表于 2015-2-14 19:30:52

最新的1hz选频也只能整数点频率抗干扰,你们公司想入这行可以找我

3DA502 发表于 2015-2-14 20:45:13

看LZ的算法,和SDR的零中频的混频器原理一样的,使用4倍采样率采样,然后得出IQ两路直流信号

dellric 发表于 2015-2-14 22:40:29

这相当于单点DFT变换, 等效于一个窄带滤波器

yht0312 发表于 2015-2-26 08:01:27

dellric 发表于 2015-2-14 22:40
这相当于单点DFT变换, 等效于一个窄带滤波器

这个算法有自己的名称吗?我查查相关资料,谢谢您了!

yht0312 发表于 2015-2-26 08:02:03

3DA502 发表于 2015-2-14 20:45
看LZ的算法,和SDR的零中频的混频器原理一样的,使用4倍采样率采样,然后得出IQ两路直流信号 ...

这个算法有自己的名称吗?我查查相关资料,谢谢您了!

huike 发表于 2015-2-26 10:03:36

again 发表于 2015-2-14 19:28
楼主图用的是dft,他们公司的算法很简单的,不能任意频率抗干扰的

但是效果很好

again 发表于 2015-2-26 14:21:44

huike 发表于 2015-2-26 10:03
但是效果很好

串联谐振升压就不太好使了

at90s 发表于 2015-2-26 23:20:31

这个问题其实可以表述为:信号为频率已知但幅度和相位未知的正弦波,淹没在干扰和噪声中,现测量到一组值,要求根据测量值估计信号的幅度和相位,这个问题可以通过最小二乘来求得。假设信号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;

yht0312 发表于 2015-2-27 07:49:18

at90s 发表于 2015-2-26 23:20
这个问题其实可以表述为:信号为频率已知但幅度和相位未知的正弦波,淹没在干扰和噪声中,现测量到一组值

非常感谢at90s详细的解答!这回明白了,我再仔细研究研究。。。。感谢!感谢!

1米49 发表于 2015-2-27 08:04:55

看到公式,雷诀不爱

huike 发表于 2015-2-27 11:18:18

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)是怎么得到的呀

again 发表于 2015-2-27 11:30:22

翻翻我发的三点算法吧精度比这高几个数量极,

again 发表于 2015-2-27 12:10:42

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

again 发表于 2015-2-27 12:15:41

只有2G网发个贴真辛苦
页: [1]
查看完整版本: 从网上看到一个抗工频干扰的算法,不懂其原理,请教大家