Pointer to MATLAB function?

33 ビュー (過去 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 ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by