声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 10045|回复: 22

[编程技巧] 求实现Matlab连续周期函数

  [复制链接]
发表于 2011-4-13 16:26 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 321forever 于 2011-4-13 19:46 编辑

1.离散函数可以用repmat来实现,那么连续函数呢
2.连续函数,有函数y=t*t (0<t<1), 以1为周期循环,在Matlab中有没有函数,执行操作, 或是可以用for循环么?
回复
分享到:

使用道具 举报

发表于 2011-4-13 17:30 | 显示全部楼层
在数字的世界了,哪有连续函数呢?将取样间隔小一点就可以了!
 楼主| 发表于 2011-4-13 17:49 | 显示全部楼层
回复 2 # zhouyang664 的帖子

我用离散的方式模拟出来了,但还是想试下连续的可不可以。
想求的是x^2周期为1,画3个周期。
这个式子可以做出
  1. y=@(x)x^2.*(x>=-1&x<1)+(x-2)^2.*(x>=1&x<3)+(x-4).*(x>=3&x<5);
  2. fplot(y,[-1,5]);
复制代码
我想用for循环去修改但是出错了
  1. function y=qq
  2. y=@(x)x^2.*(x>=-1&x<1);
  3. for i=2:3
  4. y=@(x)y+(x-(i-1)*2)^2.*(x>=-1+(i-1)*2&x<1+(i-1)*2);
  5. end
  6. Undefined function or method 'plus' for input arguments of type
  7. 'function_handle'.
复制代码

这个循环有什么错误么,请指点下,谢谢

点评

LZ写的好复杂,把算术运算和关系运算都放在一个语句里面,阅读起来很困那。  发表于 2011-4-13 18:02
发表于 2011-4-13 23:52 | 显示全部楼层
回复 1 # 321forever 的帖子

个人水平专业有限, 真的不明白LZ要什么!?
可否建议LZ说明有何目的!? 仅为了画图? 或信号处理?
还有同一问题, 请勿开新帖!? http://forum.vibunion.com/thread-101500-1-1.html
发表于 2011-4-13 23:57 | 显示全部楼层
难道LZ要这样!?
clc;clear
sr=10; dt=1/sr;t1=-1:dt:1-dt; y1=t1.^2;
yy=[y1,y1,-0.9:dt:1];
yy2=repmat(yy',[5,1]); yy2=yy2(:);
tt=-1:dt:29-dt;
plot(tt,yy2)

评分

2

查看全部评分

 楼主| 发表于 2011-4-14 01:42 | 显示全部楼层
回复 4 # ChaChing 的帖子

感谢前辈回复,我3天前发的贴,觉得说的不是很明白,但今天没有办法修改删除,所以又开了一个贴。
我能用repmat函数对单一离散函数做周期变换,现在想尝试下能不能用单一的连续函数做成周期连续函数。因为我想既然能生成单一的连续函数方程,y=@(x)x^2.*(x>=-1&x<1);
那么应该有方法让此方程重复吧。
我编程序在3楼,但是出现错误了,烦请前辈指教。

点评

楼主的意思是不是解的延拓啊!  发表于 2011-4-14 14:43
发表于 2011-4-14 13:44 | 显示全部楼层
  1. n = 3;
  2. x = linspace(0,pi);
  3. y = tan(sin(x)) - sin(tan(x));
  4. subplot(211)
  5. plot(x,y);
  6. x1 = bsxfun(@plus,repmat(x',1,3),(0:n-1)*pi);
  7. y1 = repmat(y,1,n);
  8. subplot(212)
  9. plot(x1(:),y1)
复制代码
前段时间有人似乎问过这个问题,我写了个小例子,希望对你有所帮助

评分

1

查看全部评分

发表于 2011-4-14 14:40 | 显示全部楼层
本帖最后由 meiyongyuandeze 于 2011-4-14 20:25 编辑

自己随便写了下,应该是这个意思吧,高等数学中的解的延拓!
昨天学习了一个关于行向量生成矩阵的帖子,正好用在这里了,呵呵!
  1. clc
  2. clear
  3. n = 3;
  4. x1 = linspace(-1,1);
  5. y = x1.^2;
  6. subplot(211)
  7. plot(x1,y);
  8. x2=x1'*ones(1,n)+ones(length(x1),1)*[0:2:2*(n-1)];
  9. y1=y'*ones(1,n);
  10. subplot(212)
  11. plot(x2,y1)
复制代码



untitled.jpg

评分

2

查看全部评分

发表于 2011-4-14 15:38 | 显示全部楼层
回复 6 # 321forever 的帖子

用矩阵运算就可以解决问题!
 楼主| 发表于 2011-4-14 15:50 | 显示全部楼层
本帖最后由 321forever 于 2011-4-14 15:55 编辑

回复 7 # qibbxxt 的帖子

谢谢回复,学习了,能再帮我看看我3楼的程序错在什么地方了么,y=@(x)x^2.*(x>=-1&x<1);这个函数可不可以做成周期函数,能不能给出函数表达式
 楼主| 发表于 2011-4-14 15:52 | 显示全部楼层
回复 8 # meiyongyuandeze 的帖子

谢谢回复,学习解的延拓,能再帮我看看我3楼的程序错在什么地方了么,因为做的是分段函数,所以写成连续函数的形式省一些程序行,还想找一个能循环连续函数的方法

点评

个人水平有限!感觉函数应该不能像你那样直接相加吧。  发表于 2011-4-14 17:06
 楼主| 发表于 2011-4-14 17:28 | 显示全部楼层
本帖最后由 321forever 于 2011-4-14 19:20 编辑

谢谢大家帮忙,我试了这个循环可以用

  1. function y=qq(x)
  2. y=x^2.*(x>=-1&x<1);
  3. for i=1:2
  4. y=y+(x-2*i)^2.*(x>=-1+2*i & x<1+2*i);
  5. if i==2
  6.     y=y+1.*(x==5);
  7. end
  8. end
  9. y=@qq;
  10. fplot(y,[-1,5])
复制代码
[ x^2.jpg

点评

运行你的程序出了错误!  发表于 2011-4-14 18:54

评分

1

查看全部评分

发表于 2011-4-14 18:13 | 显示全部楼层
回复 12 # 321forever 的帖子

好,谢谢分享,学习了!刚才运行了下你的程序,好像有点问题!
>> y=@qq
y =
    @qq
>> fplot(y,[-1,5])
??? Error using ==> feval
Undefined function or method 'qq' for input arguments of type 'double'.
Error in ==> fplot at 102
x = xmin; y = feval(fun,x,args{4:end});
qq函数我建到了一个M文件中!
 楼主| 发表于 2011-4-14 19:03 | 显示全部楼层
本帖最后由 321forever 于 2011-4-14 19:16 编辑

回复 13 # meiyongyuandeze 的帖子

前8行是qq中的程序,后两行是在command里面输入的
  1. function y=qq(x)
  2. y=x^2.*(x>=-1&x<1);
  3. for i=1:2
  4. y=y+(x-2*i)^2.*(x>=-1+2*i & x<1+2*i);
  5. if i==2
  6. y=y+1.*(x==5);
  7. end
  8. end
复制代码
后两行是在command里面输入的,

  • y=@qq;
  • fplot(y,[-1,5])


发表于 2011-4-14 19:10 | 显示全部楼层
回复 14 # 321forever 的帖子

>> y=@qq
y =
    @qq
>> fplot(y,[-1,5])
??? Error using ==> feval
Undefined function or method 'qq' for input arguments of type 'double'.
Error in ==> fplot at 102
x = xmin; y = feval(fun,x,args{4:end});
就是在command里输入的,难道是版本的问题!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-27 00:12 , Processed in 0.108212 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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