youshen 发表于 2010-11-21 21:57

关于分段函数的问题。。

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


appleseed05 发表于 2010-11-21 22:16

简单处理 help if elseif else end

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

secondye 发表于 2010-11-21 22:30

哦,最近我也遇到这样的问题
就是构造一段信号,在不同的时段出现不同频率的信号
楼主解决了没?

zhouyang664 发表于 2010-11-21 22:36

举个简单的例子,毕竟你的程序太长...
t = 0: 0.001 :10
x = sin(t).*(t<5) + cos(t).*(t>=5 & t<=10)

Happy99 发表于 2010-11-22 00:22

帮忙搜索下, 还真不好找
http://forum.vibunion.com/forum-viewthread-tid-3692-highlight-%B7%D6%B6%CE%BA%AF%CA%FD.html
基本如同版主给的!

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

qibbxxt 发表于 2010-11-22 08:45

function y=myfun(t)
if t>=1 && t<=250
    y=t-1/250+0.5*sin(0.2*t);
elseif t>=251 && t<=500
    y=500-t/250+0.5*sin(0.2*t);
elseif t>=501 && t<=750
    y=t-501/250+0.5*sin(0.2*t);
elseif t>=751 && t<=1000
    y=1000-t/250+0.5*sin(0.2*t);
else
    error('t的范围不对');
end

youshen 发表于 2010-11-22 19:07

回复 2 # appleseed05 的帖子

谢谢你。

youshen 发表于 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);

youshen 发表于 2010-11-22 19:10

回复 4 # zhouyang664 的帖子

非常感谢你。。呵呵。。

youshen 发表于 2010-11-22 19:11

回复 5 # Happy99 的帖子

谢谢你。。

youshen 发表于 2010-11-22 19:11

回复 6 # qibbxxt 的帖子

谢谢你。。

Happy99 发表于 2010-11-22 21:04

回复 8 # youshen 的帖子

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

还有LZ好像不需要一楼一楼谢吧!

hitdely 发表于 2010-12-7 09:00

x1=sin(2*pi*50*t);x2=sin(2*pi*100*t)+sin(2*pi*50*t);
x=;
这样可以吗?

Happy99 发表于 2010-12-7 15:37

回复 13 # hitdely 的帖子

应该也可以!
但有点浪费储存空间(内存?)

hitdely 发表于 2010-12-7 19:19

本帖最后由 hitdely 于 2010-12-7 20:37 编辑

回复 14 # Happy99 的帖子

恩 是啊 没考虑这个事情 还得多学习啊
页: [1] 2
查看完整版本: 关于分段函数的问题。。