声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3202|回复: 17

[编程技巧] 关于分段函数的问题。。

  [复制链接]
发表于 2010-11-21 21:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
请问下,分段函数的matlab程序?大括号在matlab里面怎么处理?
fig1.png


回复
分享到:

使用道具 举报

发表于 2010-11-21 22:16 | 显示全部楼层
简单处理 help if elseif else end

建议楼主发贴前,先搜索本版,关于分段函数的帖子有很多,肯定可以解决你的问题
新手的话建议读一下精华贴 [原创]写给学习 matlab 的新手们 http://forum.vibunion.com/thread-23494-1-1.html, 对你的提高必定有帮助

点评

现在搜索不太方便!  发表于 2010-11-22 00:10

评分

1

查看全部评分

发表于 2010-11-21 22:30 | 显示全部楼层
哦,最近我也遇到这样的问题
就是构造一段信号,在不同的时段出现不同频率的信号
楼主解决了没?
发表于 2010-11-21 22:36 | 显示全部楼层
举个简单的例子,毕竟你的程序太长...
t = 0: 0.001 :10
x = sin(t).*(t<5) + cos(t).*(t>=5 & t<=10)

评分

1

查看全部评分

发表于 2010-11-22 00:22 | 显示全部楼层
帮忙搜索下, 还真不好找
http://forum.vibunion.com/forum- ... CE%BA%AF%CA%FD.html
基本如同版主给的!

基本上个人以为分段不复杂时, 使用ls的写法不错, 但较复杂时, 分段建立x1,x2,x3,x4,...
然後在x=[x1,x2,x3,x4,...]也是可以

评分

1

查看全部评分

发表于 2010-11-22 08:45 | 显示全部楼层
  1. function y=myfun(t)
  2. if t>=1 && t<=250
  3.     y=t-1/250+0.5*sin(0.2*t);
  4. elseif t>=251 && t<=500
  5.     y=500-t/250+0.5*sin(0.2*t);
  6. elseif t>=501 && t<=750
  7.     y=t-501/250+0.5*sin(0.2*t);
  8. elseif t>=751 && t<=1000
  9.     y=1000-t/250+0.5*sin(0.2*t);
  10. else
  11.     error('t的范围不对');
  12. end
复制代码

评分

1

查看全部评分

 楼主| 发表于 2010-11-22 19:07 | 显示全部楼层
回复 2 # appleseed05 的帖子

谢谢你。
 楼主| 发表于 2010-11-22 19:10 | 显示全部楼层
回复 3 # secondye 的帖子

解决了。。贴出程序如下。。
t = 0: 1 :1000

x=(0.5*sin(0.2*t)).*( t>=1&t<=250)+(0.7*sin(0.5*t)).*(t>=251 & t<=500)+( 0.5*sin(0.1*t)) .*(t>=501 & t<=750)+( 0.9*sin(0.6*t)).*(t>=751 & t<=1000);
plot(t,x);
fig2.png

点评

赞成: 5.0
赞成: 5
  发表于 2010-11-23 10:58

评分

1

查看全部评分

 楼主| 发表于 2010-11-22 19:10 | 显示全部楼层
回复 4 # zhouyang664 的帖子

非常感谢你。。呵呵。。
 楼主| 发表于 2010-11-22 19:11 | 显示全部楼层
回复 5 # Happy99 的帖子

谢谢你。。
 楼主| 发表于 2010-11-22 19:11 | 显示全部楼层
回复 6 # qibbxxt 的帖子

谢谢你。。
发表于 2010-11-22 21:04 | 显示全部楼层
回复 8 # youshen 的帖子

一眼瞄下图, 直觉有问题? 原本8F与1F题目不同了:@Q
5F的用法
xx=[0.5*sin(0.2*[0:250]), 0.7*sin(0.5*[251:500]), 0.5*sin(0.1*[501:750]), 0.9*sin(0.6*[751:1000])];

还有LZ好像不需要一楼一楼谢吧!
发表于 2010-12-7 09:00 | 显示全部楼层
x1=sin(2*pi*50*t);x2=sin(2*pi*100*t)+sin(2*pi*50*t);
  x=[x1(1:400),x2(401:800),x1(801:end)];
这样可以吗?
发表于 2010-12-7 15:37 | 显示全部楼层
回复 13 # hitdely 的帖子

应该也可以!
但有点浪费储存空间(内存?)
发表于 2010-12-7 19:19 | 显示全部楼层
本帖最后由 hitdely 于 2010-12-7 20:37 编辑

回复 14 # Happy99 的帖子

恩 是啊 没考虑这个事情 还得多学习啊
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-11 20:18 , Processed in 0.175970 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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