For loop in function handle
43 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I want to creat a function with multiple variables, something like:
f = @(x) = f1(x) + f2(x) + ... + fn(x)
where x is a n-dimensional vector which can be define by user. The number of functions f1,f2,..,fn can be define by user, too.
The question is can i use a for loop in function handle to define f according to the length of vector x?
0 Commenti
Risposte (2)
Stephen23
il 24 Giu 2020
Modificato: Stephen23
il 24 Giu 2020
You can simply store function handles in a cell array of any size and use cellfun. No loop required.
>> C = {@sin,@sqrt,@pow2};
>> F = @(x) sum(cellfun(@(f)f(x),C));
>> F(3)
ans = 9.8732
compare with:
>> sin(3) + sqrt(3) + pow2(3)
ans = 9.8732
If you really want to use a for loop then you would need to write the function in an Mfile, e.g.:
function out = myfun(x)
out = 0;
C = {@sin,@sqrt,@pow2};
for k = 1:numel(C)
out = out + C{k}(x);
end
end
8 Commenti
Stephen23
il 28 Giu 2020
"How can i define function C with unknown number of variables (i call it as N), others parameters are generate corresponding to N."
Rather than creating lots of variables the simple and efficient MATLAB way is to use one vector/matrix/array.
Your approach is making this much more complex than it needs to be.
Walter Roberson
il 26 Giu 2020
The question is can i use a for loop in function handle to define f according to the length of vector x?
NO. Anonymous functions cannot use for .
Anonymous functions can use arrayfun() and cellfun() and can use function calls that process the resulting arrays.
0 Commenti
Vedere anche
Categorie
Scopri di più su Shifting and Sorting Matrices in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!