wlsarafe 发表于 2008-5-26 13:28

函数调用的问题

请教高手:
   设有一函数表达式,
N=256;
n=0:N-1;
s=exp{j(2*n+3*n.^2)};
   现在要创建一个f.m文件的函数function f=f(s,T),该函数的功能是实现对上面的s函数表达式的延时,即f=s(t-T),请问如何实现?谢谢。

sogooda 发表于 2008-5-26 15:30

没看明白问题,楼主再说说?

wlsarafe 发表于 2008-5-26 18:23

意思就是说:我现在要创建一个函数f,让它实现s=exp{j(2*n+3*n.^2)}的延时T后的表达式,即变为f=exp{j[2*(n-T)+3*(n-T).^2}
我想定义的m文件的函数为:function f=f(s,T),让它实现对表达式s的调用,然后得到s延时T后的表达式,麻烦帮我想一下该咋写,谢谢啦!

sigma665 发表于 2008-5-26 19:13

s=exp{j(2*n+3*n.^2)}
里面没有和T相关啊

wwbeyondww 发表于 2008-5-26 19:15

还是不明白到底要怎的..
s如果由
N=256;
n=0:N-1;
s=exp{j(2*n+3*n.^2)};
产生, 那f函数里面没必要把s作为参数吧,直接把它写到函数体里就行了.

要是s只是一个数组,那样的话我觉得先需要求得n,然后再代入延时后的公式中,稍微麻烦点

sogooda 发表于 2008-5-26 19:27

楼主是要做符号运算吧?
我只能实现字符的替换,以下是实现方法,仅供参考。
主函数syms t;
s=exp(j*(2*t+3*t.^2));
sT=f(char(s),'T')你要的子函数(实际上只有一句话,可以不用子函数的)。function fs=f(ss,Tao)
fs=regexprep(ss,'t',sprintf('(t-%c)',Tao));运行结果:
sT =

exp(i*(2*(t-T)+3*(t-T)^2))

[ 本帖最后由 sogooda 于 2008-5-26 19:31 编辑 ]

wlsarafe 发表于 2008-5-26 20:21

之所以要定义这个函数,是因为在主程序中要反复调用它,是把表达式s=exp{j(2*n+3*n.^2)}写在外面而不是把s定义成函数,如果把s定义成函数,再进行延时,那个就很简单,现在关键是就给一个表达式s=exp{j(2*n+3*n.^2)},然后定义一个函数function f=f(s,T)来实现f=exp{j},我看见有人调用过这样的函数,但没见到过里面是咋写的。
我不是做符号运算,是数值计算,是写一个延时函数,根据不同参数的调用,得到相应的延时序列。

sogooda 发表于 2008-5-26 20:28

回复 7楼 的帖子

符号都出来了,数值还会遥远吗?
只要前面定义好了t,T
eval(sT)就可以了
页: [1]
查看完整版本: 函数调用的问题