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

507 Ansichten (letzte 30 Tage)
Alekhya
Alekhya am 11 Mai 2020
Bearbeitet: madhan ravi am 11 Mai 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.

Akzeptierte Antwort

KALYAN ACHARJYA
KALYAN ACHARJYA am 11 Mai 2020
Bearbeitet: KALYAN ACHARJYA am 11 Mai 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)

Weitere Antworten (1)

madhan ravi
madhan ravi am 11 Mai 2020
Bearbeitet: madhan ravi am 11 Mai 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 Kommentare
Alekhya
Alekhya am 11 Mai 2020
Bearbeitet: Alekhya am 11 Mai 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 am 11 Mai 2020
I meant to say
pdfx = 2*sqrt(x)

Melden Sie sich an, um zu kommentieren.

Produkte


Version

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by