编写matlab程序,在工作区输入1时输出巴特沃斯滤波器,在工作区输入2时输出正弦波和余弦图像,在工作区输入3时输出三维图像,在工作区输入4时输出D触发器的输入输出图像
时间: 2024-03-23 22:43:28 浏览: 46
好的,以下是符合您要求的Matlab代码:
```matlab
% 判断输入的数字,输出对应的结果
input_num = input('请输入数字:');
if input_num == 1
% 巴特沃斯滤波器
[b, a] = butter(5, 0.5, 'low');
disp('巴特沃斯滤波器:');
disp(['b = ', num2str(b)]);
disp(['a = ', num2str(a)]);
elseif input_num == 2
% 正弦波和余弦图像
t = linspace(0, 2*pi, 100);
y1 = sin(t);
y2 = cos(t);
figure;
plot(t, y1, 'r', 'LineWidth', 2);
hold on;
plot(t, y2, 'b', 'LineWidth', 2);
legend('sin', 'cos');
xlabel('时间');
ylabel('幅值');
title('正弦波和余弦图像');
elseif input_num == 3
% 三维图像
[x, y] = meshgrid(-2:0.2:2);
z = x .* exp(-x .^ 2 - y .^ 2);
figure;
surf(x, y, z);
xlabel('x轴');
ylabel('y轴');
zlabel('z轴');
title('三维图像');
elseif input_num == 4
% D触发器的输入输出图像
t = 0:0.01:2;
d = square(2*pi*t, 50);
q = zeros(size(t));
for i = 2:length(t)
if d(i) > d(i-1)
q(i) = 1;
elseif d(i) < d(i-1)
q(i) = 0;
end
end
figure;
plot(t, d, 'b', 'LineWidth', 2);
hold on;
plot(t, q, 'r', 'LineWidth', 2);
legend('D', 'Q');
xlabel('时间');
ylabel('幅值');
title('D触发器的输入输出图像');
else
% 输入数字不在指定范围内
disp('请输入1、2、3或4!');
end
```
需要注意的是,这里只是简单的实现了您的要求,并没有考虑输入数字的合法性等问题,如果需要更完善的实现,需要在代码中添加一些判断条件。
阅读全文