习题:如图所示锯齿波信号,分别去一个周期的抽样数据,和五个周期的数据,,计算其傅立叶变换和。
锯齿波信号波形图。
编程如下:方法1:
计算单位锯齿波和五个周期波形的傅立叶变换
解法1:基本用循环实现数值的计算;对于5个周期锯齿波用内外循环来实现。
t1=1一个周期锯齿波。
n1=10000;
t1=linspace(0,t1-t1/n1,n1)';
f1=0*t1;
f1=1-2*t1;
omg=32*pi频率抽样区间。
k1=100频率抽样点数。
omg=linspace(-omg/2,omg/2-omg/k1,k1)';
x1=0*omg;
for k=1:k1求解五个周期函数的傅里叶变换系数。
for n=1:n1
x1(k)=x1(k)+t1/n1*f1(n)*exp(-j*omg(k)*t1(n));
endend
fs1=0*t1;
for n=1:n1通过傅里叶逆变换还原原函数。
for k=1:k1
fs1(n)=fs1(n)+omg/2/pi/k1*x1(k)*exp(j*omg(k)*t1(n));
endend
t2=5五个周期锯齿波。
n2=10000;
t2=linspace(0,t2-t2/n2,n2)';
f2=0*t2;
t3=linspace(0,t2/5-t2/n2,n2/5)';先定义一个周期内的锯齿波变量抽样值。
f3=0*t3初始化一个周期的函数抽样值。
f3=1-2*t3表示出一个周期内函数抽样值。
for s=0:4 %将一个周期锯齿波平移到五个周期,通过循环控制。
for a=1:n2/5
f2(2000*s+a)=f3(a);
endend将函数拓展表示为五个周期。
x2=0*omg;
for k=1:k1求解五个周期函数的傅里叶变换系数。
for n=1:n2
x2(k)=x2(k)+t2/n2*f2(n)*exp(-j*omg(k)*t2(n));
endend
fs2=0*t2;
for n=1:n1通过傅里叶逆变换还原原函数。
for k=1:k1
fs2(n)=fs2(n)+omg/2/pi/k1*x2(k)*exp(j*omg(k)*t2(n));
endend
figure;
subplot(2,2,1);
plot(omg,abs(x1),'r以幅度频谱画图。
xlabel('frequency'),ylabel('amplitude');
title('单个锯齿波的幅频曲线');
subplot(2,2,2);
plot(t1,fs1,'r');
xlabel('second(s)')ylabel('amplitude');
title('由频域还原时域函数');
subplot(2,2,3);
plot(omg,abs(x2),'r');
xlabel('frequency'),ylabel('amplitude');
title('五个周期锯齿波的幅频曲线');
subplot(2,2,4);
plot(t2,fs2,'r');
xlabel('second(s)')ylabel('amplitude');
title('由频域还原时域函数');
相关曲线:方法2:
计算单位锯齿波和五个周期波形的傅立叶变换
解法2:数值算法用矩阵实现,大大加快了运行速度;并且直接调用“sawtooth”生成5个周期的锯齿波。
t1=1单个周期时域范围
n1=10000时域抽样点数
t1=linspace(0,t1-t1/n1,n1生成抽样时间点。
f1=1-2*t1生成抽样函数值
omg=32*pi频域范围。
k1=100频域抽样点数。
omg=linspace(-omg/2,omg/2-omg/k1,k1)';生成抽样频率点。
x1=t1/n1*exp(-j*kron(omg,t1.')f1; %傅里叶正变换求解傅里叶系数。
fs1=omg/2/pi/k1*exp(j*kron(t1,omg.')x1; %傅里叶逆变换还原时域函数。
t2=5五个周期时域范围。
n2=10000时域抽样点数。
t2=linspace(0,t2-t2/n2,n2生成抽样时间点。
fs2=0*t2;
f2=sawtooth(t2*2*pi,0生成五个周期的锯齿波
x2=t2/n2*exp(-j*kron(omg,t2.')f2; %傅里叶正变换求解傅里叶系数。
fs2=fs2+omg/2/pi/k1*exp(j*kron(t2,omg.')x2; %傅里叶逆变换还原时域函数。
figure生成一个2*2矩阵子图。
subplot(2,2,1);
plot(omg,abs(x1),'r一个周期时的频谱图。
xlabel('frequency'),ylabel('amplitude')
title('单个锯齿周期幅频特性曲线');
subplot(2,2,2
plot(t1,fs1,'r还原的时域函数
xlabel('time'),ylabel('amplitude')
title('function after recovered');
subplot(2,2,3);
plot(omg,abs(x2),'r五个周期时的频谱图
xlabel('frequency'),ylabel('amplitude')
title('五个锯齿周期幅频特性曲线');
subplot(2,2,4);
plot(t2,fs2,'r还原的时域函数。
xlabel('time'),ylabel('function after recovered')
title('function after recovered');
经过本课程的学习,我们小组进一步对于matlab的数值算法有了自己的了解。很多数**算,可以类似地通过高级语言的方法实现,比如循环,可是这样花费的时间比较久,相应的**也比较长。matlab软件库函数中有很多基于矩阵算法,因此,将问题通过矩阵来实现,将大大缩短程序和运行时间。
基础函数MATLAB实现作业
第7组 1.利用matlab绘制典型离散时间序列的时域波形。1 单位阶跃序列 n 3 1 8 u zeros 1,3 ones 1,9 figure stem n,u xlabel n ylabel u n grid on title 单位阶跃序列 2 单位采样序列 n 3 1 8 y zeros ...
2019暑假建模培训Matlab小作业
1 matlab函数绘图。1 做出函数y t itsin t 在极坐标和直角坐标下的表示图。2 绘制z exp 0.1 i t 的复数图形。2 matlab编程。1 网上查找高斯插值算法和hermite插值算法的步骤,使用matlab编程实现这两个算法 要求定义为函数形式 2 已知某矩形温箱中3 5...
matlab作业
2011029170002王柳。a 一个问题的病态性如何,与求解它的算法有关系。错 b 无论问题是否病态,好的算法都会得到它好的近似解。错 c 计算中使用更高的精度,可以改善问题的病态性。错 d 用一个稳定的算法计算一个良态问题,一定会得到它好的近似解。对 e 浮点数在整个数轴上是均匀分布。错 f ...