声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 920|回复: 7

[编程技巧] 函数调用的问题

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

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

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

x
请教高手:
   设有一函数表达式,
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),请问如何实现?谢谢。
回复
分享到:

使用道具 举报

发表于 2008-5-26 15:30 | 显示全部楼层
没看明白问题,楼主再说说?
 楼主| 发表于 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后的表达式,麻烦帮我想一下该咋写,谢谢啦!
发表于 2008-5-26 19:13 | 显示全部楼层
s=exp{j(2*n+3*n.^2)}
里面没有和T相关啊
发表于 2008-5-26 19:15 | 显示全部楼层
还是不明白到底要怎的..
s如果由
N=256;
n=0:N-1;
s=exp{j(2*n+3*n.^2)};
产生, 那f函数里面没必要把s作为参数吧,直接把它写到函数体里就行了.

要是s只是一个数组,那样的话我觉得先需要求得n,然后再代入延时后的公式中,稍微麻烦点
发表于 2008-5-26 19:27 | 显示全部楼层
楼主是要做符号运算吧?
我只能实现字符的替换,以下是实现方法,仅供参考。
主函数
  1. syms t;
  2. s=exp(j*(2*t+3*t.^2));
  3. sT=f(char(s),'T')
复制代码
你要的子函数(实际上只有一句话,可以不用子函数的)。
  1. function fs=f(ss,Tao)
  2. fs=regexprep(ss,'t',sprintf('(t-%c)',Tao));
复制代码
运行结果:
sT =

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

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

评分

1

查看全部评分

 楼主| 发表于 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[2*(n-T)+3*(n-T).^2]},我看见有人调用过这样的函数,但没见到过里面是咋写的。
我不是做符号运算,是数值计算,是写一个延时函数,根据不同参数的调用,得到相应的延时序列。
发表于 2008-5-26 20:28 | 显示全部楼层

回复 7楼 的帖子

符号都出来了,数值还会遥远吗?
只要前面定义好了t,T
eval(sT)就可以了
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-6-29 08:48 , Processed in 0.059972 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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