zahlenmange (array) "transponieren"

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • zahlenmange (array) "transponieren"

    hallo coder,

    erstmal ein prgrammiertes guten tag! hoffe ihr könnt mir bei meiner denk-nuss helfen.

    mein problem ist grundsätzlich eher mathematischer natur:

    ich hab in meinem array ein paarhundert float-werte, die sind ganz klein und allesamt positiv (zb 0.000436)
    zur weiterverwendung brauche ich aber ein array mit werten zwischen -1 und 1. die "dynamik" der werte soll natürlich die gleiche bleiben.
    die höchste zahl der zahlenmenge soll also zum schluss 1 sein und die kleinste -1.
    ich weiß dazu leider nicht einmal den mathematischen begriff. (transponieren? standardisieren? normalisieren?)

    bin jeden dankbar, der mir auf die sprünge hilft!

    liebe grüße,
    esther

    (zur erlklärung: es werden viele fast-furier transformationen gemacht und die werte bestimmter frequenzbänder werden in ein array geschrieben und in späterer folge grafisch dargestellt.)
  • hi !

    danke für die schnelle antwort.

    genau, die höchste zahl der ausgangszahlenmenge ist später 1.

    hab auch schon die lösung, glaube ich:

    ich teile 2 durch die größte zahl und bekomme einen faktor. ich multipliziere alle werte mit diesem faktor und subtrahiere zum schluss immer 1. damit hatte ich im excel mit ein paar testwerten 2 identische kurven. was sagst du?
  • hi nochmal,

    so gings doch nicht.

    weiß wer einen lösungsansatz? ist es wirklich so kompliziert oder stehe ich sprichwörtlich auf der leitung?

    also wie gesagt:
    - ich habe ein array mit sehr vielen kleinen(zb.0.000011), ausschließlich positiven float-werten.
    - diese werte werden quasi als kurve grafisch ausgegeben.
    - mein problem: wie bekomme ich es hin, dass ich mein array so bearbeite, dass die zahlen zwischen -1 und 1 liegen, das verhältnis zwischen den zahlen(also die kurve) gleich bleibt?

    wie auch schon erwähnt soll die größte zahl im array der kleinen zahlen später 1 sein und die kleinste später -1.

    bitte bitte, wer mir helfen kann bekommt von mir ein bier :D
  • hm so eben aus dem Kopf komm ich auf:
    Bilde die Differenz zwischen dem größten und Kleinsten Wert. Dividiere 2 durch diese Differenz und multipliziere alle Werte mit dieser Zahl. Danach nimmst du die kleinste Zahl, addierst 1 dazu und subtrahierst das von allen Werten. Theoretisch müsst das hinhauen ;)

    nochmal mit Formeln: Für einen Wert w gilt:
    w(neu) = w(alt) * 2/(max-min) - (min*2/(max-min) + 1)
  • Info: Normalisieren passt noch am ehesten. Da Array leicht als eindimensionale Matrize verstanden werden, kann wäre Transponieren etwas völlig anderes: [wikipedia]http://de.wikipedia.org/wiki/Matrix_(Mathematik)#Die_transponierte_Matrix[/wikipedia]. Normalisieren passt da schon deutlich besser, da du den Wertebreich deiner Zahlenreihe skalierst, ohne die Relationen zwischen den Zahlen zu verändern. Auch hier muss man aufpassen, denn eindimensional Matrizen (Vektoren) normalisiert man anders, aber der Begriff ist nicht spezifisch für die lineare Algebra (kommt auch oft in der Statistik/Stochastik, Numerik oder beim Dreisatz vor). Standardisieren kenne ich in der Mathematik nur als einen anderen Ausdruck für die z-Transformation. Dabei ändert man eine Zufallsgröße so, dass der Erwartungswert 0 und die Varianz 1 ist, um mit der Standardnormalverteilung (N(0,1)-Normalverteilung) rechnen zu können/ablesen zu können.
    Soviel zu den genannten Begrifflichkeiten ;)
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]
  • Eigentlich sollten negative Zahlen kein Problem sein, man sollte nur damit rechnen, alternativ könnte auch folgendes funktionieren: Such das kleinste negative raus und guck wieviel unter 0 es ist (nennen wir es x. Dann addierst du den Betrag x auf alle Zahlen deines Arrays und normalisierst dann. Je nachdem kannst du danach x auch normalisieren und von allen wieder abziehen oder nicht, kommt drauf an wofür du es brauchst.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]