321forever 发表于 2011-4-13 16:26

求实现Matlab连续周期函数

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

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

zhouyang664 发表于 2011-4-13 17:30

在数字的世界了,哪有连续函数呢?将取样间隔小一点就可以了!

321forever 发表于 2011-4-13 17:49

回复 2 # zhouyang664 的帖子

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

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

ChaChing 发表于 2011-4-13 23:52

回复 1 # 321forever 的帖子

个人水平专业有限, 真的不明白LZ要什么!?
可否建议LZ说明有何目的!? 仅为了画图? 或信号处理?
还有同一问题, 请勿开新帖!? http://forum.vibunion.com/thread-101500-1-1.html

ChaChing 发表于 2011-4-13 23:57

难道LZ要这样!?
clc;clear
sr=10; dt=1/sr;t1=-1:dt:1-dt; y1=t1.^2;
yy=;
yy2=repmat(yy',); yy2=yy2(:);
tt=-1:dt:29-dt;
plot(tt,yy2)

321forever 发表于 2011-4-14 01:42

回复 4 # ChaChing 的帖子

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

qibbxxt 发表于 2011-4-14 13:44

n = 3;
x = linspace(0,pi);
y = tan(sin(x)) - sin(tan(x));
subplot(211)
plot(x,y);
x1 = bsxfun(@plus,repmat(x',1,3),(0:n-1)*pi);
y1 = repmat(y,1,n);
subplot(212)
plot(x1(:),y1)前段时间有人似乎问过这个问题,我写了个小例子,希望对你有所帮助

meiyongyuandeze 发表于 2011-4-14 14:40

本帖最后由 meiyongyuandeze 于 2011-4-14 20:25 编辑

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



meiyongyuandeze 发表于 2011-4-14 15:38

回复 6 # 321forever 的帖子

用矩阵运算就可以解决问题!

321forever 发表于 2011-4-14 15:50

本帖最后由 321forever 于 2011-4-14 15:55 编辑

回复 7 # qibbxxt 的帖子

谢谢回复,学习了,能再帮我看看我3楼的程序错在什么地方了么,y=@(x)x^2.*(x>=-1&x<1);这个函数可不可以做成周期函数,能不能给出函数表达式

321forever 发表于 2011-4-14 15:52

回复 8 # meiyongyuandeze 的帖子

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

321forever 发表于 2011-4-14 17:28

本帖最后由 321forever 于 2011-4-14 19:20 编辑

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

function y=qq(x)
y=x^2.*(x>=-1&x<1);
for i=1:2
y=y+(x-2*i)^2.*(x>=-1+2*i & x<1+2*i);
if i==2
    y=y+1.*(x==5);
end
end
y=@qq;
fplot(y,[-1,5])[

meiyongyuandeze 发表于 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文件中!

321forever 发表于 2011-4-14 19:03

本帖最后由 321forever 于 2011-4-14 19:16 编辑

回复 13 # meiyongyuandeze 的帖子

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


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


meiyongyuandeze 发表于 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里输入的,难道是版本的问题!
页: [1] 2
查看完整版本: 求实现Matlab连续周期函数