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

701 visualizzazioni (ultimi 30 giorni)
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.

Risposta accettata

KALYAN ACHARJYA
KALYAN ACHARJYA il 11 Mag 2020
Modificato: KALYAN ACHARJYA il 11 Mag 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)

Più risposte (1)

madhan ravi
madhan ravi il 11 Mag 2020
Modificato: madhan ravi il 11 Mag 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 Commenti
Alekhya
Alekhya il 11 Mag 2020
Modificato: Alekhya il 11 Mag 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 il 11 Mag 2020
I meant to say
pdfx = 2*sqrt(x)

Accedi per commentare.

Prodotti


Release

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by