找回密码
 注册
Simdroid-非首页
查看: 134|回复: 6

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

[复制链接]
发表于 2010-10-28 14:14:45 | 显示全部楼层 |阅读模式 来自 湖南长沙
y-t是周期性三角波,在一个周期内t=[10 15]内其函数关系为:y=160*t-1675(10=<t<=12.5);y=-160*t+2325(12.5=<t<=15);请各朋友指点如何编程实现循环?非常感谢。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2010-10-28 15:00:58 | 显示全部楼层 来自 河北廊坊
Simdroid开发平台
1# 淘汰郎

  1. clear;clc;close all
  2. x=linspace(7.5,30);
  3. t=mod(x,5)+10;
  4. y=(160*t-1675).*(t>=10 & t<=12.5)+(-160*t+2325).*(t>12.5 & t<=15);
  5. plot(x,y);
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

 楼主| 发表于 2010-10-28 16:00:21 | 显示全部楼层 来自 湖南长沙
2# qibbxxt

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2010-10-28 16:57:04 | 显示全部楼层 来自 河北廊坊
很明显,是点太少的原因,linspace默认是去100个点,可以多去点,
  1. x=linspace(7.5,300,5000);
复制代码
但是右端变大的时候,还是不行,根据这个问题,一种好的处理办法是
  1. x=7.5:2.5:300;
复制代码
,但是不通用

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2010-10-28 17:18:59 | 显示全部楼层 来自 湖南湘潭
本帖最后由 lin2009 于 2010-10-28 17:20 编辑

你估计一下一个周期要画出几个点(如30个点,越多越不容易失真),再乘上周期数,就可以得出linspace所需的点数了。
如:

  1. clear;
  2. clc;
  3. close all;

  4. % x = linspace(7.5, 300, 5000);
  5. xmin = 7.5;
  6. xmax = 300;
  7. x = linspace(xmin, xmax, ceil((xmax-xmin)/5)*30);

  8. xx = mod(x, 5) + 10;
  9. y = (160*xx - 1675) .* (xx >= 10 & xx <= 12.5) + ( -160*xx + 2325) .* (xx > 12.5 & xx <= 15);

  10. plot(x,y);
复制代码

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2010-10-28 17:20:27 | 显示全部楼层 来自 湖南长沙
6# qibbxxt
在斑竹的指导下,我的这个问题已经解决,非常感谢!我正在在学习malab编程,以后还会遇到很多疑惑,还请斑竹帮忙!
回复 不支持

使用道具 举报

 楼主| 发表于 2010-10-28 19:35:03 | 显示全部楼层 来自 湖南长沙
7# lin2009
真是好心人,谢谢了!
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-5 13:30 , Processed in 0.049675 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表