📝 DSP Lab 2 - 学生实验模板

📌 编程规范说明:
⚠️ 提交文件列表:
📄 exercise1_basic_response.m
%% 练习一:差分方程与响应
% 文件名: exercise1_basic_response.m
% 学号:______  姓名:______

clear; clc; close all;

%% 准备输入信号 u[n]
n = 0:19;
x = []; % TODO 生成单位阶跃输入信号

%% 系统 1
b1 = []; % TODO 定义系统1的分子系数
a1 = []; % TODO 定义系统1的分母系数
y1 = []; % TODO 计算系统1的响应

%% 系统 2
b2 = []; % TODO 定义系统2的分子系数
a2 = []; % TODO 定义系统2的分母系数
y2 = []; % TODO 计算系统2的响应

%% 系统 3
b3 = []; % TODO 定义系统3的分子系数
a3 = []; % TODO 定义系统3的分母系数
y3 = []; % TODO 计算系统3的响应

%% 绘图
% TODO 绘图要求:
% 使用 subplot 创建一个 3x1 的图形布局。
% - 第一个子图: 绘制系统1的响应 y1。
% - 第二个子图: 绘制系统2的响应 y2。
% - 第三个子图: 绘制系统3的响应 y3。
figure('Name', '练习一:系统响应对比');
% 在此编写绘图代码...


%% ========================================
%  🔍 提交前自检 (请勿修改以下代码)
%  =======================================
vars_chk = {'x', 'y1', 'y2', 'y3'};
miss = {};
for i = 1:length(vars_chk)
    if ~exist(vars_chk{i}, 'var') || isempty(eval(vars_chk{i}))
        miss{end+1} = vars_chk{i};
    end
end
if ~isempty(miss)
    fprintf(2, '❌ 错误:以下变量未赋值或为空,无法通过批改:\n   -> %s\n', strjoin(miss, ', '));
else
    fprintf('✅ 练习一变量检查通过。\n');
end
📄 exercise2_pz_analysis.m
%% 练习二:零极点图绘制与分析
% 文件名: exercise2_pz_analysis.m
% 依赖: dpzplot.m
% 学号:______  姓名:______

clear; clc; close all;

figure('Name', '练习二:零极点图');

%% 系统 1
b1 = []; % TODO 定义系统1的分子系数
a1 = []; % TODO 定义系统1的分母系数
subplot(1,3,1);
dpzplot(b1, a1);
title('系统 1');

%% 系统 2
b2 = []; % TODO 定义系统2的分子系数
a2 = []; % TODO 定义系统2的分母系数
subplot(1,3,2);
dpzplot(b2, a2);
title('系统 2');

%% 系统 3
b3 = []; % TODO 定义系统3的分子系数
a3 = []; % TODO 定义系统3的分母系数
subplot(1,3,3);
dpzplot(b3, a3);
title('系统 3');

%% ========================================
%  🔍 提交前自检 (请勿修改以下代码)
%  =======================================
vars_chk = {'b1', 'a1', 'b2', 'a2', 'b3', 'a3'};
miss = {};
for i = 1:length(vars_chk)
    if ~exist(vars_chk{i}, 'var') || isempty(eval(vars_chk{i}))
        miss{end+1} = vars_chk{i};
    end
end
if ~isempty(miss)
    fprintf(2, '❌ 错误:以下变量未赋值或为空,无法通过批改:\n   -> %s\n', strjoin(miss, ', '));
else
    fprintf('✅ 练习二变量检查通过。\n');
end