Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Miten tälläinen asteikko desibeleiksi?

Sivun loppuun

JPQ [06.01.2010 11:28:09]

#

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.

zacura [06.01.2010 11:50:38]

#

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.

JPQ [06.01.2010 14:04:34]

#

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.

Sami [06.01.2010 14:12:36]

#

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.

JPQ [06.01.2010 14:14:31]

#

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.

zacura [06.01.2010 14:42:37]

#

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.

JPQ [06.01.2010 16:39:25]

#

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..

zacura [06.01.2010 17:04:04]

#

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.

Metabolix [06.01.2010 17:14:32]

#

Yleisesti kahteen desimaaliin pyöristäminen onnistuu kaavalla round(100 * x) / 100.

JPQ [06.01.2010 19:11:33]

#

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.

Blaze [06.01.2010 19:17:55]

#

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.

tkarkkainen [06.01.2010 19:26:23]

#

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.

JPQ [07.01.2010 07:32:11]

#

itse asiassa asteikko se mikä korvallekkin se mitä haetaan eli kait 20 on oikein tällöin.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta