使用Matlab绘制正弦信号

产生一个正弦波,进行傅里叶变换,并绘图展示时域和频域
该正弦波的函数表示是
  y = s i n ( ω 0 t )   \ y=sin(\omega_0 t) \  y=sin(ω0t) 
在matlab中需要敲入公式
  f = s i n ( 2 π f 0 n T s )   \ f = sin(2\pi f_0nT_s) \  f=sin(2πf0nTs) 
  T s   \ T_s \,  Ts为采样周期,   f s   \ f_s\,  fs为采样频率,   T s = 1 / f s   \ T_s=1/f_s\,  Ts=1/fs
  ω 0 = 2 π f 0   \ \omega_0=2\pi f_0 \,  ω0=2πf0
  f s ≥ 2 f 0   \ f_s\geq 2f_0\,  fs2f0此处的   f 0   \ f_0\,  f0为中心频率

%% 产生一个正弦波,进行傅里叶变换,并绘图展示时域和频域
close all;clear;
%% 参数
N = 2000;
n = 1:1:N;
fs = 1000;
Ts = 1/fs;
f_0 = 100;%中心频率,也就是信号的频率
%% 时域信号
f = sin(2*pi*f_0*n*Ts);
%% 绘图
figure(1);

subplot(3,1,1)
plot(n/fs,f);%时域,plot(t,f)的横坐标是10,polt(f)的横坐标是1000
xlabel('t/s');title('时域信号');

ff = fft(f);
subplot(3,1,2);
plot(fs*n/N,abs(ff)/N);%频域
xlabel('Hz');title('频域');

subplot(3,1,3)
k = -(N-1)/2:(N-1)/2;%将原点移动到横坐标中心
plot(fs*k/N,abs(fftshift(ff))/N);%fftshift将零频分量移动到数组中心
xlabel('Hz');title('频域(零点在中间)');

使用Matlab绘制正弦信号_第1张图片

法二

clear;clc;close all;
fs = 1000;%采样率
t=0:1/fs:1-1/fs;%0-1
Ts=1/fs;
f0=100;
y = sin(2*pi*f0*t);

figure(1);
subplot(2,1,1);
plot(t,y);
xlabel("t/s");

subplot(2,1,2);
y_f=fft(y);
plot(abs(y_f));
xlabel("f/Hz");

使用Matlab绘制正弦信号_第2张图片
代码三:

  1. 生成正弦信号,进行傅里叶变换,标准化横轴
  2. 生成一个矩形信号,进行傅里叶变换观察,将矩形信号和正弦信号进行相乘,观察时域,相乘后的信号进行傅里叶变换,观察可知,实现了对矩形信号的频谱搬移。
clear ;close all;clc;
%% 正弦信号的时域和频域
f=1000;%采样频率,不是函数的频率
t=0:1/f:10-1/f;
y=sin(2*pi*25*t);
y_f=fft(y);
y_f_2=fftshift(y_f);

figure;
subplot(3,1,1);%时域信号
plot(t,y);  
h = (0:length(y)-1)*f/length(y);
subplot(3,1,2);%频域信号
plot(h,abs(y_f));
subplot(3,1,3);%以0为中心
n=length(y);
h_s = (-n/2:n/2-1)*(f/n);
plot(h_s,abs(y_f_2));  

%% 混频,频谱搬移
rect=zeros(1,length(t));
for i=4500:1:5500
    rect(i)=1;
end
figure;
subplot(3,1,1);%矩形信号频域
rect_f=fft(rect);
plot(abs(fftshift(rect_f)));
subplot(3,1,2);%矩形信号*余弦信号
mult = rect.*y;

plot(mult);
subplot(3,1,3);%矩形信号*余弦信号的频域
mult_f=fft(mult);
plot(h_s,abs(fftshift(mult_f)));

    


你可能感兴趣的:(matlab,开发语言)