【急求】matlab 求助! 10
鄙人一点都不会。只是要交作业。clearall;closeall;t0=10;%定义时间长度ts=0.001;fs=1/ts;t=[-t0/2:ts:t0/2];%定义时...
鄙人一点都不会。只是要交作业。
clear all; close all;
t0=10; %定义时间长度
ts=0.001; fs=1/ts;
t=[-t0/2:ts:t0/2]; %定义时间序列
df=0.5; %定义频率分辨率
x=sin(20*t).*cos(100*t); m=x./(20*t);
w=t0/(2*ts)+1; %确定t=0的点
m(w)=1; %修正t=0点的信号值
m=20.*m;
[M,mn,dfy]=fft_seq(m,ts,df); %傅立叶变换
M=M/fs;
f=[0:dfy:dfy*length(mn)-dfy]-fs/2; %定义频率序列
figure(1)
subplot(2,1,1); plot(t,m);
xlabel('时间/s');ylabel('幅值');title('原信号的波形');
axis([-2,2,-30,30]);
subplot(2,1,2);
plot(f,abs(fftshift(M)));
xlabel('频率/Hz');ylabel('幅值');
axis([-50,50,0,4]);title('原信号的频谱');
t0=10; %信号持续的时间
ts1=0.01;
fs1h=100;
t1=[-t0/2:ts1:t0/2]; %定义满足抽样条件的时间序列
x1=sin(20*t1).*cos(100*t1);
m1=x1./(20*t1); w1=t0/(2*ts1)+1;
m1(w1)=1; %修正t=0时的信号值
m1=20.*m1;
[M1,mn1,df1]=fft_seq(m1,ts1,df); %对满抽样条件的信号进行傅立叶变换
M1=M1/fs1h;N1=[M1,M1,M1,M1,M1,M1,M1,M1,M1,M1,M1,M1,M1];
f1=[-7*df1*length(mn1):df1:6*df1*length(mn1)-df1]-fs1h/2;
figure(2)
subplot(2,1,1); stem(t1,m1);
xlabel('时间/s');ylabel('幅值');
title('抽样满足信号的波形');axis([-1.5,1.5,-20,30]);
subplot(2,1,2)
plot(f1,abs(fftshift(N1)));
xlabel('频率/Hz');ylabel('幅值');axis([-100,100,0,2]);
title('抽样满足的信号频谱');axis([-100,100,0,2]);
t0=10; %信号持续的时间
ts1=0.025;
fs1l=40;
t1=[-t0/2:ts1:t0/2]; %定义满足抽样条件的时间序列
x1=sin(20*t1).*cos(100*t1); m1=x1./(20*t1); w1=t0/(2*ts1)+1;
m1(w1)=1; %修正t=0时的信号值
m1=20.*m1;
[M1,mn1,df1]=fft_seq(m1,ts1,df); %对满抽样条件的信号进行傅立叶变换
M1=M1/fs1l;N1=[M1,M1,M1,M1,M1,M1,M1,M1,M1,M1,M1,M1,M1];
f1=[-7*df1*length(mn1):df1:6*df1*length(mn1)-df1]-fs1l/2;
figure(3)
subplot(2,1,1); stem(t1,m1);
xlabel('时间/s');ylabel('幅值');
title('抽样满足信号的波形');axis([-1,1,-20,30]);
subplot(2,1,2)
plot(f1,abs(fftshift(N1)));
xlabel('频率/Hz');ylabel('幅值');axis([-50,50,0,2.5]);
title('抽样满足的信号频谱');axis([-50,50,0,2.5]);
function [M,m,df]=fft_seq(m,ts,df)
fs=1/ts;
if nargin==2
n1=0
else
n1=fs/df
end
n2=length(m);n=2^(max(nextpow2(n1),nextpow2(n2)));
M=fft(m,n);m=[m,zeros(1,n-n2)];df=fs/n;
输进去说是没有定义傅里叶变换那个函数。就是fft_seq。。。。然后我改怎么改?哪位大神帮我改改?或是怎么添加这个函数? 展开
clear all; close all;
t0=10; %定义时间长度
ts=0.001; fs=1/ts;
t=[-t0/2:ts:t0/2]; %定义时间序列
df=0.5; %定义频率分辨率
x=sin(20*t).*cos(100*t); m=x./(20*t);
w=t0/(2*ts)+1; %确定t=0的点
m(w)=1; %修正t=0点的信号值
m=20.*m;
[M,mn,dfy]=fft_seq(m,ts,df); %傅立叶变换
M=M/fs;
f=[0:dfy:dfy*length(mn)-dfy]-fs/2; %定义频率序列
figure(1)
subplot(2,1,1); plot(t,m);
xlabel('时间/s');ylabel('幅值');title('原信号的波形');
axis([-2,2,-30,30]);
subplot(2,1,2);
plot(f,abs(fftshift(M)));
xlabel('频率/Hz');ylabel('幅值');
axis([-50,50,0,4]);title('原信号的频谱');
t0=10; %信号持续的时间
ts1=0.01;
fs1h=100;
t1=[-t0/2:ts1:t0/2]; %定义满足抽样条件的时间序列
x1=sin(20*t1).*cos(100*t1);
m1=x1./(20*t1); w1=t0/(2*ts1)+1;
m1(w1)=1; %修正t=0时的信号值
m1=20.*m1;
[M1,mn1,df1]=fft_seq(m1,ts1,df); %对满抽样条件的信号进行傅立叶变换
M1=M1/fs1h;N1=[M1,M1,M1,M1,M1,M1,M1,M1,M1,M1,M1,M1,M1];
f1=[-7*df1*length(mn1):df1:6*df1*length(mn1)-df1]-fs1h/2;
figure(2)
subplot(2,1,1); stem(t1,m1);
xlabel('时间/s');ylabel('幅值');
title('抽样满足信号的波形');axis([-1.5,1.5,-20,30]);
subplot(2,1,2)
plot(f1,abs(fftshift(N1)));
xlabel('频率/Hz');ylabel('幅值');axis([-100,100,0,2]);
title('抽样满足的信号频谱');axis([-100,100,0,2]);
t0=10; %信号持续的时间
ts1=0.025;
fs1l=40;
t1=[-t0/2:ts1:t0/2]; %定义满足抽样条件的时间序列
x1=sin(20*t1).*cos(100*t1); m1=x1./(20*t1); w1=t0/(2*ts1)+1;
m1(w1)=1; %修正t=0时的信号值
m1=20.*m1;
[M1,mn1,df1]=fft_seq(m1,ts1,df); %对满抽样条件的信号进行傅立叶变换
M1=M1/fs1l;N1=[M1,M1,M1,M1,M1,M1,M1,M1,M1,M1,M1,M1,M1];
f1=[-7*df1*length(mn1):df1:6*df1*length(mn1)-df1]-fs1l/2;
figure(3)
subplot(2,1,1); stem(t1,m1);
xlabel('时间/s');ylabel('幅值');
title('抽样满足信号的波形');axis([-1,1,-20,30]);
subplot(2,1,2)
plot(f1,abs(fftshift(N1)));
xlabel('频率/Hz');ylabel('幅值');axis([-50,50,0,2.5]);
title('抽样满足的信号频谱');axis([-50,50,0,2.5]);
function [M,m,df]=fft_seq(m,ts,df)
fs=1/ts;
if nargin==2
n1=0
else
n1=fs/df
end
n2=length(m);n=2^(max(nextpow2(n1),nextpow2(n2)));
M=fft(m,n);m=[m,zeros(1,n-n2)];df=fs/n;
输进去说是没有定义傅里叶变换那个函数。就是fft_seq。。。。然后我改怎么改?哪位大神帮我改改?或是怎么添加这个函数? 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询