Help with index for maximum value

1 vue (au cours des 30 derniers jours)
Brantosaurus
Brantosaurus le 14 Fév 2024
Commenté : Brantosaurus le 14 Fév 2024
I have an 2D array of data containing product fractions. The column index is associated with a mix ratio. The row index is associated with the product species. I can find the maximum fraction value for a specific species, but the mix ratio (and index) is wrong.
My code gives:
species max-frac mix-ratio
*H2 0.96220083 0.3
H2O 0.6870072 6.5
*OH 0.12253145 8
*O2 0.098079432 10
*H 0.041959177 10
*O 0.023207462 10
HO2 0.00045286 10
H2O2 6.51818E-05 10
O3 1.13457E-06 10
But the correct answer should be:
species max-frac mix-ratio
*H2 0.96220083 0.3
H2O 0.6870072 8
*OH 0.12253145 10
*O2 0.098079432 10
*H 0.041959177 6.5
*O 0.023207462 10
HO2 0.00045286 10
H2O2 6.51818E-05 10
O3 1.13457E-06 10
Any help sorting this out would be much appreciated.
format long g
fracts()
species max-frac mix-ratio *H2 9.6220083e-01 3.0000000e-01 H2O 6.8700720e-01 6.5000000e+00 *OH 1.2253145e-01 8.0000000e+00 *O2 9.8079432e-02 1.0000000e+01 *H 4.1959177e-02 1.0000000e+01 *O 2.3207462e-02 1.0000000e+01 HO2 4.5285974e-04 1.0000000e+01 H2O2 6.5181832e-05 1.0000000e+01 O3 1.1345688e-06 1.0000000e+01
  2 commentaires
Walter Roberson
Walter Roberson le 14 Fév 2024
Modifié(e) : Walter Roberson le 14 Fév 2024
type fracts
of = [0.3 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 6.5 7 7.5 8 8.5 9 9.5 10]; names = { '*H2'; 'H2O'; '*OH'; '*O2'; '*H'; '*O'; 'HO2'; 'H2O2'; 'O3'}; fracs = [ 0.96220083253122 0.937001387552033 0.874002714042574 0.810992700049054 0.74780577262337 0.683840005856851 0.618357080450297 0.551422328259094 0.484287900480256 0.418884308578777 0.357182267236621 0.300826351044237 0.250956482728154 0.208114480958745 0.172238875222256 0.142774189736819 0.118866074281767 0.0995650622968137 0.0839741805776359 0.0713232035303872 0.0609871740687707; 0.0377991674687795 0.0629986124479674 0.125997220790509 0.188994457804212 0.25195480252116 0.314622580031103 0.376181736506199 0.43517993283166 0.489930222331301 0.538953613901196 0.581167160588662 0.615930444659731 0.643073504795639 0.66290507957213 0.676152906227016 0.683821047289943 0.687007202392198 0.686746500964421 0.683921193935693 0.67923402113771 0.673221297606501; 2.22327976852125e-24 6.85759953134214e-18 1.24360881321903e-10 1.65983550999297e-07 9.48040334378583e-06 0.000128094622628151 0.000771840329195554 0.00279738011490611 0.00723162124064597 0.0148176596665369 0.0257038536127702 0.0393457993900356 0.0546117690529415 0.070076854609197 0.0844073534257148 0.0966629355644787 0.106397607625811 0.11357926910949 0.118432863790443 0.121297320925404 0.122531452149732; 0 9.21364685054006e-32 5.34174433004885e-19 1.89295142164211e-13 2.68543345763431e-10 3.04085360475654e-08 8.38270610050516e-07 9.54211215508342e-06 6.06164189804761e-05 0.000258760896008051 0.000832935663080812 0.00217119193598601 0.00479493196399169 0.00925026325203391 0.0159515556041904 0.025061794920379 0.0364737499057485 0.0498818174109408 0.06488555384713 0.0810748040992137 0.098079431948234; 3.34821507154084e-18 2.52865047941693e-13 6.51669170636362e-08 1.26761631833543e-05 0.000229944452125781 0.00140912960718508 0.00468506011821732 0.0105601254956405 0.018335667277251 0.0265638781664281 0.0337757085317884 0.0389383878973618 0.0416222109937517 0.04195917716899 0.0404567590241403 0.0377567111864494 0.0344415242874894 0.0309413222646071 0.0275266078132032 0.024343115131064 0.0214540059464803; 0 2.09994239128734e-30 7.47501118128108e-18 1.80187954464638e-12 1.86002251374892e-09 1.59473697335477e-07 3.40470296396595e-06 3.03976169384125e-05 0.000152567015120172 0.000516894635128139 0.00132474469856626 0.00275772447439952 0.0048827991380266 0.00759473728588379 0.0106401124308879 0.0137091378038229 0.0165335172395724 0.0189393643993122 0.0208497082710153 0.0222597310944603 0.0232074621430668; 0 6.15700192926503e-34 5.59172768866557e-21 2.30027012028065e-15 3.46998695200764e-12 4.01572114685042e-10 1.10327080890718e-08 1.22718487457335e-07 7.49217760837377e-07 3.03052602174162e-06 9.13292173694356e-06 2.20669406641223e-05 4.48216072210106e-05 7.9100015422758e-05 0.000124413872247518 0.000178163425558326 0.000236584185151753 0.000295876561847102 0.000352953824076108 0.000405693385509828 0.000452859736165154; 9.5429764863276e-35 1.63464631004911e-26 3.1311605154588e-17 3.60763856556982e-13 7.52658165719256e-11 2.47087579926888e-09 2.85898094276133e-08 1.70851118629214e-07 6.56018684470211e-07 1.85362990389827e-06 4.19674677437665e-06 8.03365758476776e-06 1.34678983749615e-05 2.02726866956291e-05 2.79423159407678e-05 3.58554678020406e-05 4.34511487430121e-05 5.03319961748204e-05 5.62805544117132e-05 6.12234322683563e-05 6.51818322320969e-05; 0 0 1.15144522820615e-36 7.42646875633622e-27 2.67068010341209e-21 1.10256114042769e-17 3.76650264552703e-15 2.69148029824262e-13 6.80746887494861e-12 8.43324431369168e-11 6.26559084359002e-10 3.16784106306547e-09 1.18218999340825e-08 3.44509017852597e-08 8.187760648436e-08 1.64604748359476e-07 2.8893351894724e-07 4.54996393304191e-07 6.57386391534331e-07 8.87263983275629e-07 1.13456881751286e-06 ]; maxFracs = max(fracs,[],2); [~,c] = find(fracs == maxFracs); ofMaxFracs = of(c)'; fmt = '%16s %16.7e %16.7e\n'; data = [names num2cell(maxFracs) num2cell(ofMaxFracs)].'; var = '\n species max-frac mix-ratio\n'; fprintf(var) fprintf(fmt,data{:}) %{ code gives this species max-frac mix-ratio *H2 0.96220083 0.3 H2O 0.6870072 6.5 *OH 0.12253145 8 *O2 0.098079432 10 *H 0.041959177 10 *O 0.023207462 10 HO2 0.00045286 10 H2O2 6.51818E-05 10 O3 1.13457E-06 10 %} %{ correct answer is species max-frac mix-ratio *H2 0.96220083 0.3 H2O 0.6870072 8 *OH 0.12253145 10 *O2 0.098079432 10 *H 0.041959177 6.5 *O 0.023207462 10 HO2 0.00045286 10 H2O2 6.51818E-05 10 O3 1.13457E-06 10 %}
Brantosaurus
Brantosaurus le 14 Fév 2024
Thank you for the formatting Walter. I'll try better next time!

Connectez-vous pour commenter.

Réponse acceptée

Voss
Voss le 14 Fév 2024
The easiest way to fix this is to use the second output from max, which tells you the column index in frac of each element of maxFracs.
[maxFracs,c] = max(fracs,[],2);
ofMaxFracs = of(c)';
  4 commentaires
Voss
Voss le 14 Fév 2024
You're welcome!
Brantosaurus
Brantosaurus le 14 Fév 2024
Also thanks for your help explaining my mistake. Very valuable. I'll keep that for reference.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Produits


Version

R2017a

Community Treasure Hunt

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

Start Hunting!

Translated by