eli jos arvo on 1 tulos on 0db
ja 2 kanssa tulee 6db,4 tulee 12db ja -2 tuleepi -6db ja 0.5 tulee -6db,0.25 kanssa -12db.j jne ps. desibelit pyöreitä kuten tiedätte tasan tuplat desibeleissä ei ole ihan tarkalleen 6db.
Desibelien laskeminen onnistuu kaavalla
A_dB = 20 log(abs(A))
jossa A on vahvistus.
Mutta tuo tapaus että -2:sta tulisi -6 dB vaikuttaa vähän oudolta, koska vahvistus 0.5 vastaa -6 dB:ä. Tuolla kaavalla -2:sta tulee 6 dB ja vaiheenkääntö 180 astetta pitää huomioida muulla tavalla.
no tarkoitus siis tehdä gain säätöä ja kuten tiedämme jos kerromme näytteet luvulla 0.5db se vastaa puoleen hiljentämistä eli 6db vähennystä ja joten taitaa kaavasi olla hakemani. pikaa arvioiden kyllä no ainakin mitä sain tulokseksi luvulla 0.5 ja 2 laskinta käyttäen. eli 0-haluttuun maksimi arvoon riittää säätö varaksi. tosin windowsin laskin ei kelpuuta 0 nollaa log funktiolle pitäsköhän tuloksen olla nolla arvelenko oikein. ja 20 ja login väliin koe laskussani lisäsin kertomerkin kun se siitä ilmeisesti puuttuu.
Huomasin mietin turhaan noita -2 jne lukuja eli niiden tarvi toimia noin eli aikasemmin tänään sekoilin ja hyvin.
heräsin miten tehdään muutos toisin päin ?
ja miten katkaista desimaali osaa siedettävämpään mittaan ?
ps. en varsin matemaattinen ole ja lupaan ei liity koulu tehtäviin.
log(0) ei ole määritelty eikä myöskään logaritmia negatiivisista luvuista.
Lisäksi on aivan normaali notaatio jättää kertomerkki pois luvun ja symbolin tai kahden symbolin välistä, jos kaava on selkeä ilman sitäkin. Esimerkiksi 2a = 2*a.
log(0) ei ole määritelty hymm. no omassa koodissani asian ajaa parhaiten se että vaikka mitä tulisi "sisään" tulee "ulos" aina "nolla tasoa".
ps. normaali on normaalia heille jotka sen tuntee ja minä luotin muistiini.
JPQ kirjoitti:
tosin windowsin laskin ei kelpuuta 0 nollaa log funktiolle pitäsköhän tuloksen olla nolla arvelenko oikein.
Nolla vahvistusta ei voi ilmoittaa desibeleinä, mutta ratkaisu on esimerkiksi määrittää sopiva säätöväli vaikka -50 - 50 dB, jolloin vahvistukeksi tulisi 0.003 - 316 joka varmaan riittää normaalukäyttöön. Täydelliseen hiljennykseen voit tehdä MUTE toiminnon erikseen
JPQ kirjoitti:
heräsin miten tehdään muutos toisin päin ?
Muutos toisinpäin menee ratkaisemalla aiempi kaava A:n suhteen:
A = 10^(A_dB/20) (tai oikeammin A = +/- 10^(A_dB/20) )
JPQ kirjoitti:
ja miten katkaista desimaali osaa siedettävämpään mittaan ?
Käyttämässäsi ohjelmointikielessä on varmasti funktiot pyöristykseen, joten ei muuta kun manuaalia lukemaan.
desimaalit kokonaan pois löytynee (objective-c ja ansi c molemmat mielessä) mutta jos mä haluankin leikata vaikkapa kahteen desimaaliin niin se onkin kinkkisempi juttu. ps. kaavan "kääntö" jota sanotaan käänteis matriisiksi kaiketi on mulle hepreaa..
JPQ kirjoitti:
desimaalit kokonaan pois löytynee (objective-c ja ansi c molemmat mielessä) mutta jos mä haluankin leikata vaikkapa kahteen desimaaliin
C:llä onnistuu tulostus kahdella desimaalilla vaikka seuraavasti:
printf("%0.2f", 1.2345678); // tulostaa 1.23
printf:n lisäksi löytyy mm. sprintf joka tulostaa stdoutin sijasta merkkijonoon.
Yleisesti kahteen desimaaliin pyöristäminen onnistuu kaavalla round(100 * x) / 100
.
ps. printf ei taida vaan toimia guin piirrossa eli soveltuu komentoriviin jne muttei guilliseen ohjelmaan. ja onko 1000 oikea luku jos kolmeen desimaaliin. ja löytyykös ANSI C standardista kielestä ja macos xän objective c apista tuo round. Ansi C kirja jossain mutten just musita missä ja objective c kirjallisuutta en vielä omista edes.
JPQ kirjoitti:
ps. printf ei taida vaan toimia guin piirrossa eli soveltuu komentoriviin jne muttei guilliseen ohjelmaan
sprintf, tai no snprintf ehkä vielä mieluummin
JPQ kirjoitti:
onko 1000 oikea luku jos kolmeen desimaaliin
Kyl maar.
zacura kirjoitti:
Desibelien laskeminen onnistuu kaavalla
A_dB = 20 log(abs(A))jossa A on vahvistus.
Itse asiassa kerroin on kymmenen. Jos kyse on sähköisestä vahvistimesta, kerroin kymmenen pätee sikäli kuin A on tehon vahvistus. Silloin kun kyse on jännite- tai virtavahvistuskertoimesta, käytetään mainitsemaasi 20:ä. Tämä siksi, että teho kasvaa jännitteen ja virran neliössä, ja eksponentti voidaan ottaa logaritmin sisältä sen eteen kertoimeksi.
Sami kirjoitti:
log(0) ei ole määritelty eikä myöskään logaritmia negatiivisista luvuista.
Sikäli kuin kyse on vahvistimista, vahvistuskerroin nolla mielletään äärettömäksi vaimennukseksi, joka voidaan ilmoittaa desibelilukemana miinus ääretön. Matemaattisesti asia menee toki niin kuin sanoitkin.
itse asiassa asteikko se mikä korvallekkin se mitä haetaan eli kait 20 on oikein tällöin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.