Matlab 周期方波信号傅里叶级数展开
方波信号为:

傅里叶级数展开为:

程序运行结果:

程序代码:
clear x = -6:0.01:6;
T = 4; f = x;
for N = 1:length(f)
temp = rem(abs(x(N)),T);
if temp>1 && temp<3
f(N) = 0;
else
f(N) = 1;
end
end % f(x) = 1/2 + sum(g(k,x)) (k=1,2,3,4......)
% g(k,x) = sinc(k/2)*cos(k*pi/2*x)
% MATLAB build-in function: sinc(x) = sin(x*pi)/(x*pi) count = 9;
y = zeros(count, length(x)); for N = 1:count
k = 2*N-1;
if N==1
y(N,:) = 0.5 + sinc(k/2)*cos(k*pi/2*x);
else
y(N,:) = y(N-1,:) + sinc(k/2)*cos(k*pi/2*x);
end
end row = ceil(sqrt(count));
colomn = ceil(count/row);
for N=1:count
subplot(row,colomn,N);
plot(x,f,'k');
hold on
h = plot(x,y(N,:),'r');
title(strcat(num2str(2*N-1),' harmonic'));
end
Matlab 周期方波信号傅里叶级数展开的更多相关文章
- ROM存储1/4周期正弦信号构造DDS
上周的时候,老师让编写一个简单的dds程序,本文说明了整个过程中我遇到问题以及一些个人的思考.初次接触FPGA,如有问题请多多指教~ 1.几个疑问,解决和没有解决的. 为何采用ROM而不是直接采用DD ...
- [转] Matlab中给信号加高斯白噪声的方法
MATLAB中产生高斯白噪声非常方便,可以直接应用两个函数,一个是WGN,另一个是AWGN.WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声. 1. WGN:产生高斯白噪声 y = ...
- 【MATLAB】画信号频谱的子函数
输入信号序列和采样率,该子函数可以画出该信号的频谱图. function [f,spec,NFFT]=spec_fft_plot(sample,L,Fs) % 输入数据说明: % sample:信号序 ...
- 【Matlab】线性调频信号LFM 仿真
[知识点] 生成序列 i = a:step:b 举例: i = 1:1:9 画图(子图) subplot(m,n,p)或者subplot(m n p) 总结起来就是,画一个m行n列的图. p表示在第p ...
- MATLAB信号与系统分析(五)——连续时间信号的频谱分析
一.实验目的: 1.掌握傅立叶级数(FS),学会分析连续时间周期信号的频谱分析及MATLAB实现: 2.掌握傅立叶变换(FT),了解傅立叶变换的性质以及MATLAB实现. 二.利用符号运算求傅里叶级数 ...
- MATLAB信号与系统分析(一)——连续时间信号与系统的时域分析
一.连续时间信号的表示: 1.向量表示法: 在MATLAB中,是用连续信号在等时间间隔点的样值来近似表示连续信号,当取样时间间隔足够小时,这些离散的样值就能较好地近似出连续信号. 对于连续时间信号f( ...
- MATLAB信号与系统分析(二)——离散时间信号与系统的时域分析
一.离散信号的表示 1.一个离散信号需要用两个向量来表示: (1)离散信号的幅值 (2)离散信号的位置信息 2.用MATLAB实现离散信号的可视化 (1)不能利用符号运算来表示 (2)绘制离散信号一般 ...
- Linux系统编程(24)——信号的生命周期
信号生命周期为从信号发送到信号处理函数的执行完毕. 对于一个完整的信号生命周期(从信号发送到相应的处理函数执行完毕)来说,可以分为三个重要的阶段,这三个阶段由四个重要事件来刻画:信号诞生:信号在进程中 ...
- 信号与系统实验序章0——MATLAB基础命令入门
本次开启新的系列,关于用Matlab实现常见信号和函数的生成和变换. 同时如果没有MATLAB基础,那么可以跟着本文一步一步学习Matlab的相关操作,本文旨在记录在信号与系统课程中MATLAB的学习 ...
随机推荐
- 附加属性出现Failed to assign to property的问题
找了半天资料,最后发现把保护附加属性的类加上public就行了
- Java开发环境搭建——CentOS配置
普通用户添加到sudoers u切换到root visudo进入编辑,找到root ALL=(ALL) ALL,在后面加上myusername ALL=(ALL) ALL 配置网络sudo ...
- JAVA中保留小数的多种方法
// 方式一:double f = 3.1516;BigDecimal b = new BigDecimal(f);double f1 = b.setScale(2, BigDecimal.ROUND ...
- History lives on in this distinguished Polish city 2017/1/4
原文 History lives on in this distinguished Polish city Though it may be ancient. KraKow, Poland, is a ...
- Servlet使用注解标注监听器(Listener)
Servlet3.0提供@WebListener注解将一个实现了特定监听器接口的类定义为监听器,这样我们在web应用中使用监听器时,也不再需要在web.xml文件中配置监听器的相关描述信息了. 下面我 ...
- CentOS 7.0安装配置Vsftp服务器
一.配置防火墙,开启FTP服务器需要的端口 CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop fi ...
- Java学习笔记15
do-while循环时while循环的变体语法如下:do{ // 循环体 语句(组);}while(循环继续条件); 如果循环中的语句至少需要执行一次,那么建议使用do-while循环. for循环 ...
- cpp 调用python
在用cpp调用python时, 出现致命错误: no module named site , 原因解释器在搜索路径下没有找到python库.可以在调用Py_Initialize前,调用 Py_Se ...
- java 多线程 4 线程池
系统启动一个新线程的成本是比较高的,因为它涉及到与操作系统的交互.在这种情况下,使用线程池可以很好的提供性能,尤其是当程序中需要创建大量生存期很短暂的线程时,更应该考虑使用线程池. 与数据库连接池类似 ...
- HTML Select 标签选择后触发jQuery事件代码实例
页面设计原由: 因为很多客户不知道如何来到我们公司,领导想让我在微信公众号上面做一个链接,客户可以直接通过微信公众号打开地图并导航到我们公司的办公地点. 实现起来并不难,但由于公司有很多办事处,所以需 ...