合成这个锯齿波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])
效果:
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥30 YOLO检测微调结果p为1
- ¥20 求快手直播间榜单匿名采集ID用户名简单能学会的
- ¥15 DS18B20内部ADC模数转换器
- ¥15 做个有关计算的小程序
- ¥15 MPI读取tif文件无法正常给各进程分配路径
- ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
- ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
- ¥15 setInterval 页面闪烁,怎么解决
- ¥15 如何让企业微信机器人实现消息汇总整合
- ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题