Azzera filtri
Azzera filtri

generate random numbers in engineering notation with precision

3 visualizzazioni (ultimi 30 giorni)
Matlab folks,
I have a simple question: I want to generate a vector of random numbers formatted in engineering format (e-notation) and the precision is x.xxxxExx
The precision is what is causing me trouble especially is that my goal is to generate a vector of these
Thanks

Risposta accettata

José-Luis
José-Luis il 11 Gen 2013
Modificato: José-Luis il 11 Gen 2013
By default, variables in Matlab are double. If you want to change the way they are displayed, please look at:
doc format
If you want to save them to a text file, please look at:
doc fprintf
  4 Commenti
Mike Sirwood
Mike Sirwood il 11 Gen 2013
Ok, let me make it simpler, if I used fprintf as you suggested, then how do I store its "formatted output" in a variable as a number?
José-Luis
José-Luis il 11 Gen 2013
Modificato: José-Luis il 12 Gen 2013
You can't. Not as an "engineering" number. Not unless you create a custom data type. And Matlab would definitely not be the tool I would choose for that job. If I understand correctly your intentions, then you might be better off creating a vector of integer values.
precision_you_want = 1e-8; %for instance
your_interval = 1e-8:precision_you_want:1e-4;
numRand = 1000;
your_vector = your_interval(randi(numel(your_interval),1,numRand));
But I still think it is better to round of to the precision you want. There is no "engineering" data type, and mimicking one would be difficult, especially since most computers use binary, not decimal, format.

Accedi per commentare.

Più risposte (2)

Rick Rosson
Rick Rosson il 11 Gen 2013
  1 Commento
Mike Sirwood
Mike Sirwood il 11 Gen 2013
But when I use this function, for example and using a number like
num2eng(0.00054089)
ans = 540.89e-6
I want it in the format x.xxxxEx and not as a string

Accedi per commentare.


Daniel Shub
Daniel Shub il 11 Gen 2013
What do you mean by format? Computers tend to work with integers and floats, with floats coming in single and double precision varieties. They are internally represented as a sequence of 0's and 1's and many programs can externally display them in a variety of formats (binary, hex, decimal, engineering, etc). MATLAB by default uses double precision floats, but you can switch to single precision or integers. The format in which the number is displayed is controlled by the FORMAT function, but this has no effect on the internal representation.

Categorie

Scopri di più su Random Number Generation in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by