Making a Function file which calls another function file

2 次查看(过去 30 天)
I have this gaussian2 m file:
function [g] = gaussian2(t, tau)
g = (1/sqrt(2*pi)) .*(1/tau) .* exp(- (t .^2) / (2 * tau^2));
end
I want to make another function m file of RMStau:
sqrt( integral( @(t) t.^2 .* gaussian2(t,tau), -inf, inf ) / integral( @(t) gaussian2(t,tau), -inf, inf ))
How do I make a RMStau m file as a function of my gaussian2 input?
Thanks

采纳的回答

Ced
Ced 2016-4-8
编辑:Ced 2016-4-8
I am not sure if this is want you are asking, but you can pass a function handle as input. A mini example would be
function y = eval_myfun(h_fun,input)
y = h_fun(input);
end
and then use it as
f =@(x)sin(x);
y = eval_myfun(f,2) % this will evaluate f at x == 2
In your case, you would first generate handle to a purely time-dependent function
h_gauss = @(t)gaussian2(t,tau);
and then pass h_gauss as handle to RMStau.
For RMS however, I don't see why you wouldn't simply do this in two steps.
1. Evaluate function y = gaussian2(t,tau);
2. compute RMS
  5 个评论
petahadron
petahadron 2016-4-8
Thank you!!!!
This is how I want it to work!
May I know why you did you put
@(t) and h_fun(t)
in
sqrt( integral( @(t) t.^2 .* h_fun(t), -inf, inf )
and not in
integral( h_fun, -inf, inf )
Ced
Ced 2016-4-9
Sure.
The integral function expects a function dependent on a single variable (t) as first argument. Now, for the first integral, you want to evaluate
t.^2.*h_fun(t)
but that is not a function handle, so I have to create a new one using
@(t)t.^2.*h_fun(t) % function handle to t.^2.*h_fun(t)
In the second case, want to evaluate h_fun(t), but h_fun is already a function handle, so there is no need to add another layer.
You could of course use
@(t)h_fun(t)
here too, but it's unnecessary.

请先登录,再进行评论。

更多回答(1 个)

Walter Roberson
Walter Roberson 2016-4-8
function r = RMStau(tau)
r = sqrt( integral( @(t) t.^2 .* gaussian2(t,tau), -inf, inf ) / integral( @(t) gaussian2(t,tau), -inf, inf ));

类别

Help CenterFile Exchange 中查找有关 Mathematics 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by