用MATLAB设计一个信号与系统实验,写出其代码
时间: 2024-04-06 14:29:39 浏览: 63
好的,以下是一个简单的信号与系统实验的MATLAB代码示例:
% 信号与系统实验代码示例
% 设计一个正弦信号
fs = 1000; % 采样频率
f = 50; % 信号频率
t = 0:1/fs:1; % 信号时长为1秒
x = sin(2*pi*f*t); % 正弦信号
% 绘制信号波形图
subplot(2,2,1);
plot(t,x);
title('原始信号波形图');
xlabel('时间(s)');
ylabel('幅值');
% 绘制信号频谱图
subplot(2,2,2);
X = fft(x);
f_axis = linspace(-fs/2,fs/2,length(X));
plot(f_axis,abs(fftshift(X)));
title('原始信号频谱图');
xlabel('频率(Hz)');
ylabel('幅值');
% 设计一个低通滤波器
fc = 100; % 截止频率为100Hz
[b,a] = butter(4,fc/(fs/2),'low'); % 4阶低通滤波器
y = filter(b,a,x); % 滤波后的信号
% 绘制滤波后的信号波形图
subplot(2,2,3);
plot(t,y);
title('滤波后的信号波形图');
xlabel('时间(s)');
ylabel('幅值');
% 绘制滤波后的信号频谱图
subplot(2,2,4);
Y = fft(y);
f_axis = linspace(-fs/2,fs/2,length(Y));
plot(f_axis,abs(fftshift(Y)));
title('滤波后的信号频谱图');
xlabel('频率(Hz)');
ylabel('幅值');
% 信号的傅里叶变换和逆变换,频域分析和重构
subplot(3,2,1);
plot(t,x);
title('原始信号波形图');
xlabel('时间(s)');
ylabel('幅值');
subplot(3,2,2);
X = fft(x);
f_axis = linspace(-fs/2,fs/2,length(X));
plot(f_axis,abs(fftshift(X)));
title('原始信号频谱图');
xlabel('频率(Hz)');
ylabel('幅值');
subplot(3,2,3);
plot(t,ifft(X));
title('原始信号逆变换波形图');
xlabel('时间(s)');
ylabel('幅值');
subplot(3,2,4);
plot(f_axis,abs(fftshift(ifft(X))));
title('原始信号逆变换频谱图');
xlabel('频率(Hz)');
ylabel('幅值');
% 信号的卷积和相关运算,时域分析和处理
h = ones(1,10)/10; % 定义一个简单的卷积核
subplot(3,2,5);
plot(t,x);
hold on;
plot(t,conv(x,h),'r');
title('信号卷积运算波形图');
xlabel('时间(s)');
ylabel('幅值');
legend('原始信号','卷积后的信号');
subplot(3,2,6);
plot(t,xcorr(x));
title('信号相关运算波形图');
xlabel('时间(s)');
ylabel('幅值');
% 信号处理系统设计
fs = 8000; % 采样频率
f1 = 100; % 信号1频率
f2 = 200; % 信号2频率
t = 0:1/fs:1; % 信号时长为1秒
x1 = sin(2*pi*f1*t); % 信号1
x2 = sin(2*pi*f2*t); % 信号2
x = x1 + x2; % 信号相加
fc = 500; % 截止频率为500Hz
[b,a] = butter(4,fc/(fs/2),'low'); % 4阶低通滤波器
y = filter(b,a,x); % 滤波后的信号
subplot(2,2,1);
plot(t,x1);
title('信号1波形图');
xlabel('时间(s)');
ylabel('幅值');
subplot(2,2,2);
plot(t,x2);
title('信号2波形图');
xlabel('时间(s)');
ylabel('幅值');
subplot(2,2,3);
plot(t,x);
title('信号相加波形图');
xlabel('时间(s)');
ylabel('幅值');
subplot(2,2,4);
plot(t,y);
title('滤波后的信号波形图');
xlabel('时间(s)');
ylabel('幅值');
阅读全文