Why is @(x) used in matlab and how does it work?

564 visualizaciones (últimos 30 días)
Alekhya
Alekhya el 11 de Mayo de 2020
Editada: madhan ravi el 11 de Mayo de 2020
pdfx = @(x) 2*sqrt(x); % Define PDF
x = rand(1,100000); % Generate Random ‘x’
px = pdfx(x); % Generate Data
This is a piece of code used to generate a random variable of self defined pdf. Why is @(x) used here and how is it working.

Respuesta aceptada

KALYAN ACHARJYA
KALYAN ACHARJYA el 11 de Mayo de 2020
Editada: KALYAN ACHARJYA el 11 de Mayo de 2020
Its creates the function handle, I suggest ti go through the following MATLAB Documentation, and any issue let us know here
1.See the example, the first line cretes the function named as "pdfx" (Function is 2*sqrt(x))
pdfx = @(x) 2*sqrt(x);
2. Next you have defined x some random data
x = rand(1,100000); % Generate Random ‘x’
3. Passing the x values in the function pdfx as defined
px = pdfx(x);
Its similar to, defined the function file
function y=pdfx(x)
y =2*sqrt(x);
end
Now call the function
x = rand(1,100000);
px = pdfx(x);
Please go through the above mentioned link, you will get more information
Experts any comments please (If I missed any important issue)

Más respuestas (1)

madhan ravi
madhan ravi el 11 de Mayo de 2020
Editada: madhan ravi el 11 de Mayo de 2020
It’s just a matter of choice as Kalyan mentioned above how it works. The usage depends completely on the coder. As pdfx(...) was defined before generation of data , it was defined as a function handle here. It’s equivalent to pdfx = ... without @(x) after generation of x.
  3 comentarios
Alekhya
Alekhya el 11 de Mayo de 2020
Editada: Alekhya el 11 de Mayo de 2020
Its not equivalent to pdfx(...) without @(x) after generation of x.
>> x = rand(1,100000);
px = pdfx(2*sqrt(x));
It is giving an error "Array indices must be positive integers or logical values"
madhan ravi
madhan ravi el 11 de Mayo de 2020
I meant to say
pdfx = 2*sqrt(x)

Iniciar sesión para comentar.

Productos


Versión

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by