zqjj1981 发表于 2007-1-17 17:36

数据FFT处理的问题(含data和code)

大家好

附件是我的数据文件,包括2个文件,文件1(激励信号)--- inp_fz.txt,文件2(响应信号))--- out_uz.txt。先要处理一下,修改文件名 inp_fz.txt->inp_fz.rar, out_uz.txt->out_uz.rar
它们都是时域的,时间在文件2中有
现在我想求频率响应曲线---响应信号/激励信号,即 out_uz(j*w) / inp_fz(j*w)
下面是我的代码,但是结果不对,希望谁能帮我,谢谢!

clear; close all; clc;
% input file
fid1 = fopen('inp_fz.txt','rt');
cc1= textscan(fid1,'%f',200001,'headerlines',1);
input = cc1{1,1};
fclose(fid1);

% output file
fid2 = fopen('out_uz.txt','rt');%% Open in read mode as text.
cc2 = textscan(fid2,'%f    %f',200001,'headerlines',1);
tt = cc2{1,1};               %采样时间
output = cc2{1,2};
fclose(fid2);

% matlab code to do FFT calculation
Fs=1e6;                        %采样频率
N=1024*8;
w1=abs(fft(input,N));
w2=abs(fft(output,N));         %对输出信号 频谱分析
w=w2./w1;
freq = Fs*(0:(N/2))/N;   
% plot(freq,w(1:(N/2+1)))
semilogx(freq,w(1:(N/2+1)))
grid on;

yangzj 发表于 2007-1-18 08:46

信号是实测的吗?为什么说结果不对呢

zqjj1981 发表于 2007-1-18 14:14

这个信号不是实测的,是我用ansys仿真得到的,因此它不含有外部噪音
因为我关心待测的频率到达 1e5Hz, 因此我的采样频率为 1e6Hz.
我输入信号为半正弦脉冲信号,脉冲宽度0.002s,从我的数据文件可以看出。

附图 是我直接用ansys做谐响应分析得到的 频率响应曲线。
我不知道我上面的数据分析过程错误呢,还是说,我的半正弦脉冲信号脉冲宽度太大了

谢谢帮忙

yangzj 发表于 2007-1-19 09:15

把传递函数做成双对数图,可以看出前面一部分和ansys的频响函数应该是一样的.只有后面一部分不对.
再从input和output的频谱图来看,可看出后面一部分频率成分两者都很小,所以做传递函数出来的图是杂乱的.
因此你的怀疑应该是对的,主要是因为输入信号的频带不够宽,没有能激起第二阶模态.把input的脉冲时间调窄一点应该就行

[ 本帖最后由 yangzj 于 2007-1-19 09:21 编辑 ]

zqjj1981 发表于 2007-1-20 23:52

to yangzj,

首先谢谢您的回答。
根据您的提示,我修改后得到的数据如附件
文件1(激励信号)--- inp_fz.txt,文件2(响应信号))--- out_uz.txt。先要处理一下,修改文件名 inp_fz.txt->inp_fz.rar, out_uz.txt->out_uz.rar

并且附有2个新的图片,他们非常类时

zqjj1981 发表于 2007-1-21 00:01

不过我有个新的问题
看附图,看图中我用黑圈圈出来的,那些幅值相当的大,我想是不是如信号处理书中所说的有泄漏呢?
我想是不是加入窗函数可以解决这个问题呢?
还有,书里面说脉冲函数可以加指数窗,应该如何加呢?
我做个简单的例子,就是为将来做实验时候,当发现了频响曲线怪异时候,可以很快分析出是哪部分出问题了
谢谢

yangzj 发表于 2007-1-21 19:28

这主要还是由于你的输入信号不够好,没能很好的激出这些频率,传递函数是输出除以输入,试想当输入在这个频率处的幅值接近于0时,由于计算误差等原因得出来的结果就很难想象了,出现这些峰值也很容易理解了.
在实测的时候,做传递函数做模态分析,这种锤击法只适用于小阻尼材料的测试,而且需要做多段平均,并且要做相干函数区分出虚假峰.
另外你说的应该是脉冲响应函数加指数窗吧,就是直接把输出乘上一个指数窗,主要是在阻尼过小的情况下,强制把信号衰减下来
页: [1]
查看完整版本: 数据FFT处理的问题(含data和code)