淘汰郎 发表于 2010-10-28 14:14:45

请教这样一个三角波图如何用MATLAB程序实现

y-t是周期性三角波,在一个周期内t=内其函数关系为:y=160*t-1675(10=<t<=12.5);y=-160*t+2325(12.5=<t<=15);请各朋友指点如何编程实现循环?非常感谢。

qibbxxt 发表于 2010-10-28 15:00:58

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);

淘汰郎 发表于 2010-10-28 16:00:21

2# qibbxxt

斑竹你好!在这个程序的基础上,我想把三角波的范围扩大,在实际中循环的圈数也是比较多的,但是我在您的基础上把区间范围改成x=linspace(7.5,300),但是得到的三角波曲线却发生了严重的失真,这是为什么呢?期待您的相助!

qibbxxt 发表于 2010-10-28 16:57:04

很明显,是点太少的原因,linspace默认是去100个点,可以多去点,x=linspace(7.5,300,5000);但是右端变大的时候,还是不行,根据这个问题,一种好的处理办法是x=7.5:2.5:300;,但是不通用

lin2009 发表于 2010-10-28 17:18:59

本帖最后由 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);

淘汰郎 发表于 2010-10-28 17:20:27

6# qibbxxt
在斑竹的指导下,我的这个问题已经解决,非常感谢!我正在在学习malab编程,以后还会遇到很多疑惑,还请斑竹帮忙!

淘汰郎 发表于 2010-10-28 19:35:03

7# lin2009
真是好心人,谢谢了!
页: [1]
查看完整版本: 请教这样一个三角波图如何用MATLAB程序实现