How can I pass an array to Matlab function?

Hi all, Would you please advise how can I pass an array to Matlab function so that I can use each element in the array to calculate different outputs? Kind regards,

Antworten (2)

James Tursa
James Tursa am 5 Jul. 2018
Bearbeitet: James Tursa am 5 Jul. 2018

3 Stimmen

This is going to depend on whether the function in question is vectorized or not. E.g., suppose the function is vectorized:
function result = myfun(x)
result = x.^2;
end
Then you would call it like this:
x = whatever
y = myfun(x);
But suppose the function is not vectorized:
function result = myfun(x)
result = x^2; % <-- Note the use of ^ instead of .^
end
Then you would be stuck with a loop:
x = whatever
y = zeros(size(x));
for k=1:numel(x)
y(i) = myfun(x(i));
end
Or you could use the arrayfun() function (with the loop hidden in the background):
y = arrayfun(@myfun,x);
The above examples assume that the output of the function for a scalar input is also scalar. If that is not the case then different code would be needed to store the results.
Keen
Keen am 8 Jul. 2018

0 Stimmen

Many thanks, it was really helpful.

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange

Tags

Gefragt:

am 5 Jul. 2018

Beantwortet:

am 8 Jul. 2018

Community Treasure Hunt

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

Start Hunting!

Translated by