1 Star 0 Fork 0

云海/Mat_Learn

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
fourier_square.m 1.39 KB
一键复制 编辑 原始数据 按行查看 历史
云海 提交于 2024-09-17 23:39 . 第一次提交
% 设置参数
T = 1; % 周期
fs = 1000; % 采样频率
t = -2:1/fs:2; % 时间向量
% 预定义
N_max = 50; % 最大谐波数
x = zeros(size(t)); % 初始化信号
% 创建图形窗口
figure('Position', [100, 100, 1200, 500]);
% 主循环
for N = 1:2:N_max % 只取奇数谐波
x = x + (4/pi) * (1/N) * sin(2*pi*N*t/T); % 累加傅里叶级数的谐波分量
% 清除之前的图形
clf;
% 绘制时域图
subplot(2,1,1);
plot(t, x, 'b');
title(['傅里叶级数 (N = ', num2str(N), ')']);
xlabel('时间 (s)'); ylabel('振幅');
xlim([-2 2]); ylim([-1.5 1.5]);
grid on;
% 计算频域
L = length(x);
f = fs*(0:(L/2))/L;
X = fft(x);
P2 = abs(X/L);
P1 = P2(1:floor(L/2)+1);
P1(2:end-1) = 2*P1(2:end-1);
% 绘制频域图
subplot(2,1,2);
stem(f, P1);
xlim([0 10]);
title('频域图');
xlabel('频率 (Hz)'); ylabel('|P1(f)|');
grid on;
% 更新图形
drawnow;
% 可选:保存为gif
% 如果你想保存为gif,取消下面几行的注释
% frame = getframe(gcf);
% im = frame2im(frame);
% [imind,cm] = rgb2ind(im,256);
% if N == 1
% imwrite(imind,cm,'fourier_series.gif','gif', 'Loopcount',inf,'DelayTime',0.5);
% else
% imwrite(imind,cm,'fourier_series.gif','gif','WriteMode','append','DelayTime',0.5);
% end
end
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/LuIrara/Mat_Learn.git
git@gitee.com:LuIrara/Mat_Learn.git
LuIrara
Mat_Learn
Mat_Learn
main

搜索帮助