合成这个锯齿波1-2*t(0<=t<=T)/T;的前十位,如果把if mod (n,100)换了或者删了就不是锯齿波了,我现在有点不明白这个是什么作用,这一个函数好像也不需要判断奇数偶数
1条回答 默认 最新
- 技术专家团-Joel 2021-11-29 20:44关注
大玉米你好,这个
if mod(n,100)
,意思很好理解:mod(n,100)
是返回n被100整除的余数,那么由于n是从0~max_harmonics
(也即0~100
)循环取值的,所以就有mod(0,100)值为0 mod(1,100)值为1 mod(2,100)值为2 …… mod(98,100)值为98 mod(99,100)值为99 mod(100,100)值为0
而if后面是条件,如果条件为非零的数就是真,条件为0就是假;所以当n=0和100时,条件为假,不执行if里面的语句,而1~99都是需要执行if里面的语句的!!
所以得到一个傅里叶级数近似的图。其实你的mod(n,100)
的唯一作用就是把n=0
和n=100
筛去(因为n等于0不能做除数,n=100被筛了很冤枉),因为你的max_harmonics
取越大,最终就越趋近于三角波形解
所以你可以把max_harmonics
改成1000或者10000试一试
直接:t = linspace(0,1,1000); s = zeros(size(t)); max_harmonics = 1000; % 我这里改成1000了,发现更加三角锯齿了 for n = 1:max_harmonics % 从1开始,不再需要mod了 s = s + 1/(n*pi)*sin(2*n*pi*t); end plot(t,s) axis([-0.1,1.1, -inf,inf])
效果:
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 安卓adb backup备份应用数据失败
- ¥15 eclipse运行项目时遇到的问题
- ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
- ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
- ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
- ¥50 成都蓉城足球俱乐部小程序抢票
- ¥15 yolov7训练自己的数据集
- ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
- ¥15 电力市场出清matlab yalmip kkt 双层优化问题
- ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)