主要学习单/双边谱的特点,以及matlab实现方法
可以看到:正弦波的频谱图呈现出一个主要的频率峰值,而且频谱带宽很窄,主要集中在一个频率上。三角波频谱中包含了大量的奇次谐波,幅值随着频率的增加而逐渐衰减。正弦波的带宽相较三角波而言较小
PS:要狠狠学习一下写代码给变量取名字的方法
clc; clear; close all;
%% 定义三角波
T=0.03; %周期
fs=30000; t=0:1/fs:T-1/fs; %采样频率
f1=1000; %信号基频
x=sawtooth(2*pi*f1*t,0.5); %0.5指定标准三角波
subplot(211);plot(t,x); title('三角波');
%% 三角波fft计算频谱
N=length(x); %信号长度
Y=fft(x);
P2=abs(Y/N); %双边频谱
P1=P2(1:N/2+1); %单边频谱
P1(2:end-1)=2*P1(2:end-1); %单边频谱翻倍
f=fs*(0:(N/2))/N;
subplot(212);plot(f,P1);
% f=linspace(0,fs,N);
% subplot(212);plot(f,abs(Y));
%% 定义正弦波
T1=0.03; %周期
fs1=30000; t1=0:1/fs1:T1-1/fs1; %采样频率
f2=1000; %信号基频
F_wave=cos(2*pi*f2*t1); %50是占空比
figure;
subplot(211);plot(t1,F_wave); title('正弦波');
%% 计算方波频谱
N1=length(F_wave);
Y1=fft(F_wave);
P4=abs(Y1/N1); %双边频谱
P3=P4(1:N1/2+1); %单边频谱
P3(2:end-1)=2*P3(2:end-1); %单边频谱翻倍
f_wave=fs1*(0:(N1/2))/N1;
subplot(212);plot(f_wave,P3);
% %% 定义方波
% T1=0.03; %周期
% fs1=30000; t1=0:1/fs1:T1-1/fs1; %采样频率
% f2=1000; %信号基频
% F_wave=square(2*pi*f2*t1,50); %50是占空比
% figure;
% subplot(211);plot(t1,F_wave); title('方波');
%
% %% 计算方波频谱
% N1=length(F_wave);
% Y1=fft(F_wave);
% P4=abs(Y1/N1); %双边频谱
% P3=P4(1:N1/2+1); %单边频谱
% P3(2:end-1)=2*P3(2:end-1); %单边频谱翻倍
% f_wave=fs1*(0:(N1/2))/N1;
% subplot(212);plot(f_wave,P3);