搜索
bottom↓
回复: 20

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

[复制链接]

出0入0汤圆

发表于 2015-2-14 15:15:51 | 显示全部楼层 |阅读模式
本帖最后由 yht0312 于 2015-2-14 15:32 编辑

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2015-2-14 15:43:56 | 显示全部楼层
工作后,看到公式就头疼

出0入0汤圆

 楼主| 发表于 2015-2-14 15:53:05 | 显示全部楼层
cumtgao 发表于 2015-2-14 15:43
工作后,看到公式就头疼

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

出0入442汤圆

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

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

出0入0汤圆

 楼主| 发表于 2015-2-14 15:59:08 | 显示全部楼层
wye11083 发表于 2015-2-14 15:55
我能告诉你我这边有一部分人还要写论文吗 哥不写

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

出0入0汤圆

发表于 2015-2-14 17:24:37 | 显示全部楼层
怎么找到楼主图片的内容?

出0入0汤圆

发表于 2015-2-14 19:28:58 来自手机 | 显示全部楼层
楼主图用的是dft,他们公司的算法很简单的,不能任意频率抗干扰的

出0入0汤圆

发表于 2015-2-14 19:30:52 来自手机 | 显示全部楼层
最新的1hz选频也只能整数点频率抗干扰,你们公司想入这行可以找我

出0入0汤圆

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

出0入71汤圆

发表于 2015-2-14 22:40:29 | 显示全部楼层
这相当于单点DFT变换, 等效于一个窄带滤波器

出0入0汤圆

 楼主| 发表于 2015-2-26 08:01:27 | 显示全部楼层
dellric 发表于 2015-2-14 22:40
这相当于单点DFT变换, 等效于一个窄带滤波器

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

出0入0汤圆

 楼主| 发表于 2015-2-26 08:02:03 | 显示全部楼层
3DA502 发表于 2015-2-14 20:45
看LZ的算法,和SDR的零中频的混频器原理一样的,使用4倍采样率采样,然后得出IQ两路直流信号 ...

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

出10入0汤圆

发表于 2015-2-26 10:03:36 | 显示全部楼层
again 发表于 2015-2-14 19:28
楼主图用的是dft,他们公司的算法很简单的,不能任意频率抗干扰的

但是效果很好

出0入0汤圆

发表于 2015-2-26 14:21:44 | 显示全部楼层

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

出0入0汤圆

发表于 2015-2-26 23:20:31 | 显示全部楼层
这个问题其实可以表述为:信号为频率已知但幅度和相位未知的正弦波,淹没在干扰和噪声中,现测量到一组值[y(0), .... y(N-1)],要求根据测量值估计信号的幅度和相位,这个问题可以通过最小二乘来求得。假设信号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),最小二乘解是
[a b]^T = (A^T * A)^-1 * A^T*Y,其中A = [cos(2* pi * 0 * f/fs )  sin(2* pi * 0 * f/fs );cos(2* pi * 1 * f/fs )  sin(2* pi * 1 * f/fs );......;cos(2* pi * (n-1) * f/fs )  sin(2* pi * (n-1) * f/fs );],Y=[y(0) y(1) ... y(N-1)],估计出a,b后,就可以计算出幅度和相位了。

例子:信号频率为45.678Hz,幅度为0.9,相位为10度,干扰信号为50Hz,幅度为10的正弦波,不加噪声。Matlab代码仿真最终估计出来的幅度为0.89846,相位为9.7638度

f = 45.678;   % 信号频率
fi = 50;  % 干扰信号频率
fs = 150; % 采样率
N = 2048; % 采样点数,采样越多,估计结果越精确

t = [0:N-1]' / 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 = [cos(2*pi*f*t) sin(2*pi*f*t)]; % 构造矩阵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([y, x, xp], '.-'); % 将测量信号,原信号,重构后的信号画在同一幅图中方便比较

amp = sqrt(result(1)^2 + result(2)^2);
phase = atan(result(1) / result(2)) * 180 / pi;

出0入0汤圆

 楼主| 发表于 2015-2-27 07:49:18 | 显示全部楼层
at90s 发表于 2015-2-26 23:20
这个问题其实可以表述为:信号为频率已知但幅度和相位未知的正弦波,淹没在干扰和噪声中,现测量到一组值[y ...

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

出0入0汤圆

发表于 2015-2-27 08:04:55 | 显示全部楼层
看到公式,雷诀不爱

出10入0汤圆

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

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

出0入0汤圆

发表于 2015-2-27 11:30:22 | 显示全部楼层
翻翻我发的三点算法吧精度比这高几个数量极,

出0入0汤圆

发表于 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); [Y1, k]=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; %[Y1, k]=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

出0入0汤圆

发表于 2015-2-27 12:15:41 来自手机 | 显示全部楼层
只有2G网发个贴真辛苦
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-29 07:41

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表