Pointer to MATLAB function?

86 ビュー (過去 30 日間)
Kalamaya
Kalamaya 2012 年 8 月 29 日
So I have a for-loop in MATLAB, where either a vector x will be put through one function, say, cos(x).^2, or a different choice, say, sin(x).^2 + 9.*x. The user will select which of those functions he wants to use before the for-loop.
My question is, I dont want the loop to check what the user selected on every iteration. Is there a way to use a pointer to a function, (user defined, or otherwise), that every iteration will use automatically?
This is inside a script by the way, not a function.
Thanks

採用された回答

Oleg Komarov
Oleg Komarov 2012 年 8 月 29 日
An interactive way to create an anonymous function:
% List of functions
funs = {'cos(x).^2','sin(x).^2 + 9.*x'};
% Ask for the function through a dialog
[idx,ok] = listdlg('ListString' ,funs,...
'PromptString' ,'Select one function',...
'SelectionMode','single');
% Convert to anonymous function
if ok
f = str2func(sprintf('@(x)%s', funs{idx}));
end
  1 件のコメント
Kalamaya
Kalamaya 2012 年 8 月 29 日
Wow...

サインインしてコメントする。

その他の回答 (3 件)

José-Luis
José-Luis 2012 年 8 月 29 日
編集済み: José-Luis 2012 年 8 月 29 日
I am not entirely sure this is what you mean but here goes:
if (first_selection)
fun1 = @(x) cos(x).^2;
end
if (second_selection)
fun1 = @(x) sin(x).^2 + 9 .* x;
end
And now your loop:
for k = 1:num_Loops
x = your_values;
your_result = fun1(x);
end
Cheers!

owr
owr 2012 年 8 月 29 日
Do a search in the docs on function handles. They should do the trick.
  1 件のコメント
owr
owr 2012 年 8 月 29 日
Loren just wrote a nice blog post that might be helpful as well:

サインインしてコメントする。


Ghada
Ghada 2012 年 11 月 12 日
Hi all;
please i need an example of the application of iteration in ananymous function,
Awaiting to you response,
Best regards,
my mail is :chahd.hayet@gmail.com

カテゴリ

Help Center および File ExchangeProgramming についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by