1个回答
展开全部
s=importdata('s.txt');
y=fft(s,1024); %引入1024,是因为2的整数次幂点的FFT更好做一点,调用这个函数相当于将长度为1000的s补零至1024个点,做1024点FFT,效果等效于频域增加采样点
pyy=y.*conj(y); %不相当于ppy=abs(y),相当于ppy=abs(y).^2
f=10000*(0:512)/1024; %设定横坐标尺度,提醒一下楼主,10E-7对应的1E-6,你的意思应该是1E-7吧.因为横坐标以1kHz为单位,采用频率应该是10000kHz,所以10000代表的是这个意思,FFT最中间的点(以0开头的512点或者以1开头的513点)代表了一半采样频率的频率分量.
plot(f,pyy(1:513),'.-'); %绘制命令,如果要达到左图的频率范围,建议采用plot(f(1:25),pyy(1:25),'.-'),但是可以看到绘制的点数太少.
因此个人建议采用如下的语句
s=importdata('s.txt');
y=fft(s,10000);
pyy=y.*conj(y);
f=10000*(0:250)/10000;
plot(f(1:251),pyy(1:251),'.-');
因为没有s的原始数据,没法给你画图,猜测是加了哈宁窗的正弦信号.
y=fft(s,1024); %引入1024,是因为2的整数次幂点的FFT更好做一点,调用这个函数相当于将长度为1000的s补零至1024个点,做1024点FFT,效果等效于频域增加采样点
pyy=y.*conj(y); %不相当于ppy=abs(y),相当于ppy=abs(y).^2
f=10000*(0:512)/1024; %设定横坐标尺度,提醒一下楼主,10E-7对应的1E-6,你的意思应该是1E-7吧.因为横坐标以1kHz为单位,采用频率应该是10000kHz,所以10000代表的是这个意思,FFT最中间的点(以0开头的512点或者以1开头的513点)代表了一半采样频率的频率分量.
plot(f,pyy(1:513),'.-'); %绘制命令,如果要达到左图的频率范围,建议采用plot(f(1:25),pyy(1:25),'.-'),但是可以看到绘制的点数太少.
因此个人建议采用如下的语句
s=importdata('s.txt');
y=fft(s,10000);
pyy=y.*conj(y);
f=10000*(0:250)/10000;
plot(f(1:251),pyy(1:251),'.-');
因为没有s的原始数据,没法给你画图,猜测是加了哈宁窗的正弦信号.
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询