用matlab,使用动画描述采样定律,可以通过循环生成在各个采样频率下的恢复信号的图 像,生成gif动画
时间: 2024-06-04 15:12:42 浏览: 109
MATLAB 动画生成gif图片
5星 · 资源好评率100%
以下是一个简单的示例代码,用于生成采样定律的动画:
```matlab
% 设置采样频率范围和信号频率
fs_range = 10:10:100; % 采样频率范围
f = 5; % 原始信号频率
% 生成时间序列和原始信号
t = 0:0.01:1; % 时间序列
x = sin(2*pi*f*t); % 原始信号
% 初始化动画
fig = figure();
ax = axes(fig);
hold(ax, 'on');
xlim(ax, [0, 1]);
ylim(ax, [-1.2, 1.2]);
xlabel(ax, 'Time');
ylabel(ax, 'Amplitude');
title(ax, 'Sampling Theorem Animation');
% 循环生成各个采样频率下的恢复信号图像
for i = 1:length(fs_range)
% 获取当前采样频率
fs = fs_range(i);
% 进行采样并重建信号
ts = 0:1/fs:1; % 采样时刻序列
xs = sin(2*pi*f*ts); % 采样信号
xr = sinc_interp(ts, xs, t); % 重建信号
% 绘制采样信号和重建信号
plot(ax, t, x, 'k--', 'LineWidth', 1);
stem(ax, ts, xs, 'r', 'LineWidth', 1);
plot(ax, t, xr, 'b', 'LineWidth', 1);
% 更新图像
drawnow();
pause(0.5);
% 清除图像
cla(ax);
end
% 定义插值函数
function y = sinc_interp(x, y, xi)
% Sinc插值函数
y = zeros(1, length(xi));
for i = 1:length(xi)
y(i) = sum(y .* sinc(pi*(x - xi(i)), 'none'));
end
end
```
该代码使用了一个名为`sinc_interp`的函数来进行Sinc插值,该函数的实现将不在赘述。运行后,会生成一个名为`sampling_theorem.gif`的GIF动画文件,其中包含了在不同采样频率下的恢复信号图像。动画效果如下:
![sampling_theorem.gif](https://i.loli.net/2022/01/10/BX9zJqZpSvF8VEf.gif)
阅读全文