xray 发表于 2007-10-29 20:01

回复 #42 aiyou18 的帖子

你可以把正半轴的波形,做一个镜像,对称到负半轴。然后做FFT变换,100hz仍然存在。

这个方法你试过吗?我试了一下,如果我的程序没有错误的话,结果表明100Hz的成分的确消失了,代码如下:

clear
fs = 5000;
load('data.mat')
Nd = length(data);
Newdata = -data(55:end);
data(5:4+length(Newdata)) = data(5:4+length(Newdata)) + Newdata;
datafft = abs(fft(data-mean(data)));
figure(1);
plot(data)
figure(2);
plot((0:fs:fs/2*Nd-fs)/Nd, datafft(1:floor(Nd/2)))

说明:程序采用的数据是前面帖子中上传的数据,我把它保存为mat文件了。

VibrationMaster 发表于 2007-10-30 06:54

虽然存在,但是肯定小多了。半波整流是非线性操作,肯定会产生高次谐波。你最好保留全波

aiyou18 发表于 2007-10-30 16:23

to VibrationMaster: 刚看了你关于一个矢量,标量的帖子。你说无论矢量,标量都只是表达工具,但是我觉得是并非如此。

我那个方波和小尖(也就是你说的小三角)是不确定的。但是占空比,应该是固定的=50%。幅度也不确定。

因为那是我实际做实验采集来的波形。我想通过不同波形的幅度来区分开不同试验品的润滑能力并把测出的电压值转成真实摩擦力大小。

[ 本帖最后由 zhangnan3509 于 2007-10-30 16:33 编辑 ]

VibrationMaster 发表于 2007-10-30 16:48

1。一般分析方法很难恢复“小尖”的形状,通过一般的频谱分析也很难保持波形拐角地方的准确形状。 如果你对这些地方感兴趣,那么需要对目标图形参数化描述,然后用实际测量的数据优化这些参数的取值。
2。如果研究数学的人可能认为矢量和标量的差异比较大。但是从物理角度这只是描述工具而已,这是我的观点。比如一个人的体型应该用标量描述,还是矢量描述呢? 我想身高,体重,三围这5个参数大概差不多了,这应该是5个标量吧,可是你非要把这五个标量放在一个{},那么他也可以称为矢量。
3。 如果在一组人群中,体重,身高,胸围,腰围都固定了,变化的只有臀围,那时我们最好用一个标量来表示就可以了,这时用矢量很麻烦。

aiyou18 发表于 2007-10-31 10:38

to xray:我把负半轴的波形补全了。然后做fft变换还真是没有100hz的分量了,真神奇!都是50hz的奇数倍频率存在。如果是标准的锯齿波如果正负半轴都有,估计也不会有100hz分量。这个奇数倍频率和偶数倍频率是否出现有什么规律吗?





这是我的程序:
fs=5000;
t=0:1/fs:0.16;
a=load('c:\dataDouble.txt');
number=512;
y=fft(a,number);
n=0:length(y)-1;
f=fs*n/length(y);
plot(f,abs(y))


上传的是我补齐负半轴后的波形数据。

aiyou18 发表于 2007-10-31 11:04

我刚才又做了试验。如果把锯齿波正负半轴补全,频谱图里也没有100hz的分量。把理想的模拟波形,补全后,也没有100hz分量。

我可以得出结论,100hz纯粹是因为只采集了正半轴造成的。

VibrationMaster 发表于 2007-10-31 13:30

那就用3次谐波来恢复。奇周期函数的傅立叶系数中的不含二次谐波是很正常的。

aiyou18 发表于 2007-11-7 14:10

to vibrationMaster: 如何用3次谐波(150hz)的幅值推测50hz分量的幅值? 有什么对应关系吗小弟不是干这个的,不太懂。请指教。

另外,请教一个问题,波形A上叠加50hz的正弦波B生成了C。是不是不论A与B之间的相位差是多少,只要对C做FFT变换后,除去C中的50hz分量,就能把B除去?(假设A是不含50hz分量的)

aiyou18 发表于 2007-11-7 14:33

to yangzi

to yangzi:

原帖由 aiyou18 于 2007-10-23 17:07 发表
我因为不知道两个波形之间的相位差的问题。所以我才没有在时域里直接相减。
想问一下,在频域里相减需要考虑相位差吗?
yangzi:频域里复数相减和直接在时域里相减是完全一样的。傅立叶变换具有线性性

这个是yangzi你的回答,我觉得不对。

我用MATlab做了下试验。我用一个100hz的正弦波和一个300hz的正弦波叠加:x=sin(2*pi*f1*t)+sin(2*pi*f2*t);我改变这个公式中,两个波的相位差,比如x=sin(2*pi*f1*t+pi/7)+sin(2*pi*f2*t);

然后再对改变相位差前后的波形做FFT变换。我发现幅频曲线是完全一样的,只有100hz与300hz分量。改变相位差不会出现其他的频率分量。

直接在时域里相减需要知道相位差。可是在频域里相减,我可以直接排出掉一个频率分量,然后把它反变换到时域。你看这样思考对吧?

yangzj 发表于 2007-11-7 15:19

回复 #54 aiyou18 的帖子

我说是指两个信号在时域相减后再做FFT,和分别对两个信号做FFT然后再相减,这两个结果是一样的.
频域里相减和直接去掉是两回事.如果能这样做的话那就是一个简单的滤波的问题了.但现在你的问题是信号和噪声是同频率的,你怎么直接去除.

xray 发表于 2007-11-7 19:10

回复 #53 aiyou18 的帖子

另外,请教一个问题,波形A上叠加50hz的正弦波B生成了C。是不是不论A与B之间的相位差是多少,只要对C做FFT变换后,除去C中的50hz分量,就能把B除去?(假设A是不含50hz分量的)


是的。这里,关键是“A是不含50hz分量的”,相当于A和B在频域上是分离的。

VibrationMaster 发表于 2007-11-7 22:26

只要波形确定,那么三次谐波就和原始的方波有确定的关系,具体的关系需要自己推。 特别是你的波形带小尖尖,很难在教材中找到现成的答案

wzg123 发表于 2009-5-16 09:37

to:xray
我也遇到一个你类似的问题,想过滤同频率的信号叠加问题,我的问题是一个自由振动衰减信号从0时刻衰减,在t0时刻遇到一个它反射的一个同频率的信号,我要过滤同频率的反射信号。
我看了你们的讨论,本质问题还是没解决,希望大家继续讨论吧。
页: 1 2 3 [4]
查看完整版本: 同频率信号滤波的问题