请教这样一个三角波图如何用MATLAB程序实现
y-t是周期性三角波,在一个周期内t=内其函数关系为:y=160*t-1675(10=<t<=12.5);y=-160*t+2325(12.5=<t<=15);请各朋友指点如何编程实现循环?非常感谢。1# 淘汰郎
clear;clc;close all
x=linspace(7.5,30);
t=mod(x,5)+10;
y=(160*t-1675).*(t>=10 & t<=12.5)+(-160*t+2325).*(t>12.5 & t<=15);
plot(x,y);
2# qibbxxt
斑竹你好!在这个程序的基础上,我想把三角波的范围扩大,在实际中循环的圈数也是比较多的,但是我在您的基础上把区间范围改成x=linspace(7.5,300),但是得到的三角波曲线却发生了严重的失真,这是为什么呢?期待您的相助! 很明显,是点太少的原因,linspace默认是去100个点,可以多去点,x=linspace(7.5,300,5000);但是右端变大的时候,还是不行,根据这个问题,一种好的处理办法是x=7.5:2.5:300;,但是不通用 本帖最后由 lin2009 于 2010-10-28 17:20 编辑
你估计一下一个周期要画出几个点(如30个点,越多越不容易失真),再乘上周期数,就可以得出linspace所需的点数了。
如:
clear;
clc;
close all;
% x = linspace(7.5, 300, 5000);
xmin = 7.5;
xmax = 300;
x = linspace(xmin, xmax, ceil((xmax-xmin)/5)*30);
xx = mod(x, 5) + 10;
y = (160*xx - 1675) .* (xx >= 10 & xx <= 12.5) + ( -160*xx + 2325) .* (xx > 12.5 & xx <= 15);
plot(x,y);
6# qibbxxt
在斑竹的指导下,我的这个问题已经解决,非常感谢!我正在在学习malab编程,以后还会遇到很多疑惑,还请斑竹帮忙! 7# lin2009
真是好心人,谢谢了!
页:
[1]