周期方波的表达式我就不提炼了,既然你来看文章了,我就不信你周期方波都不知道。
占空比定义为:L/N,N为周期,下面我们对 L = 5,N = 20; L = 5,N = 40;L = 5,N = 60;L = 7,N = 60分别画出它们的DFS图作比较。
我觉得有必要先把对应的周期方波给出来(每幅图都只给出一个周期):
clc;clear;close all;% Periodic square wave parameters L = 5,N = 20L = 5;N = 20;n = 0:N-1;xn = [ones(1,L),zeros(1,N-L)];subplot(2,2,1)stem(n,xn);title('L = 5,N = 20');xlabel('n');ylabel('xtilde(n)');% Periodic square wave parameters L = 5,N = 40L = 5;N = 40;n = 0:N-1;xn = [ones(1,L),zeros(1,N-L)];subplot(2,2,2)stem(n,xn);title('L = 5,N = 20');xlabel('n');ylabel('xtilde(n)');% Periodic square wave parameters L = 5,N = 60L = 5;N = 60;n = 0:N-1;xn = [ones(1,L),zeros(1,N-L)];subplot(2,2,3)stem(n,xn);title('L = 5,N = 20');xlabel('n');ylabel('xtilde(n)');% Periodic square wave parameters L = 7,N = 60L = 7;N = 60;n = 0:N-1;xn = [ones(1,L),zeros(1,N-L)];subplot(2,2,4)stem(n,xn);title('L = 5,N = 20');xlabel('n');ylabel('xtilde(n)');
上面程序中的DFS函数定义在另一篇博文中:【 MATLAB 】离散傅里叶级数(DFS)及 IDFS 的 MATLAB 实现
直接给出MATLAB脚本:
clc;clear;close all;% Periodic square wave parameters L = 5,N = 20L = 5;N = 20;k = [-N/2:N/2];xn = [ones(1,L),zeros(1,N-L)];Xk = dfs(xn,N);magXk = abs( [ Xk(N/2+1:N),Xk(1:N/2+1) ] );subplot(2,2,1)stem(k,magXk);title('DFS of Square: L = 5,N = 20');xlabel('k');ylabel('Xtilde(k)');% Periodic square wave parameters L = 5,N = 40L = 5;N = 40;k = [-N/2:N/2];xn = [ones(1,L),zeros(1,N-L)];Xk = dfs(xn,N);magXk = abs( [ Xk(N/2+1:N),Xk(1:N/2+1) ] );subplot(2,2,2)stem(k,magXk);title('DFS of Square: L = 5,N = 40');xlabel('k');ylabel('Xtilde(k)');% Periodic square wave parameters L = 5,N = 60L = 5;N = 60;k = [-N/2:N/2];xn = [ones(1,L),zeros(1,N-L)];Xk = dfs(xn,N);magXk = abs( [ Xk(N/2+1:N),Xk(1:N/2+1) ] );subplot(2,2,3)stem(k,magXk);title('DFS of Square: L = 5,N = 60');xlabel('k');ylabel('Xtilde(k)');% Periodic square wave parameters L = 7,N = 60L = 7;N = 60;k = [-N/2:N/2];xn = [ones(1,L),zeros(1,N-L)];Xk = dfs(xn,N);magXk = abs( [ Xk(N/2+1:N),Xk(1:N/2+1) ] );subplot(2,2,4)stem(k,magXk);title('DFS of Square: L = 7,N = 60');xlabel('k');ylabel('Xtilde(k)');