How can I make an array of handles?
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hey,
Let's say I have a vector x=[1 2 3 4 5] (I don't know what's in it and the size its size is something I don't know in advance), And I want to make an array of handles which will, let's say, make the following:
f(i) = @(y) 3*x(i)+5*y;
How can I make it? (I'm using Matlab)
This is just a simple function but it will be the same principle I guess.
Thanks!
0 Kommentare
Antworten (3)
Star Strider
am 15 Nov. 2017
Using bsxfun:
f = @(x,y) 3*x + 5*y; % ‘Parent’ Function
ary = @(x,y) bsxfun(f, x(:), y(:)'); % Create Virtual Function Array
x = [1 2 3 4 5]; % ‘x’ — Can Be Anything
y = randi(9, 1, 3); % ‘y’ — Can Be Anything
Result = ary(x, y); % Example Use
0 Kommentare
the cyclist
am 15 Nov. 2017
Bearbeitet: the cyclist
am 15 Nov. 2017
x = [3 4 5];
i = 2;
f{i} = @(y) 3*x(i)+5*y;
Notice the curly brackets on the left-hand side of the assignment.
Kaushik Lakshminarasimhan
am 15 Nov. 2017
You don't need an array of handles to do that. You can use arrayfun like this:
x = 1:5;
y = 5;
z = arrayfun(@(x,y) 3*x + 5*y, x(:), repmat(y,length(x),1));
0 Kommentare
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!