mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP filterung von daten (in zeitbereich)


Autor: Saif K. (saif_k)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo alle zusammen,


hier geht es darum einen vektor " Audio Daten" zu filtern.

Ich möchte alle Werte,die unter einen bestimmte grenzbereicht einfach 
gleich Null setzen.Ich habe das aber nicht geschafft.....Sad

Es ist ob es eine FKT die von Zeit abhängig ist.

ZB. ein Sinus funktion: es muss doch möglich zb. alle werte die eine 
Amplitude <0.2 führen zu sin(t)== 0 sein.

wie mache ich das Bitte .

-->An der Anhang ein Beispiel von eine Cos(t) Funktion.
Die Daten,die unter eine bestimmten Amplitude sollen zu NULL gestezt 
werden.

Autor: Jochen S. (jochen_s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Zunächst mal die Frage welche Sprache verwendet wird, aber grundsätzlich 
sollte das so gehen:

for i=0:1:length(vektor)
{
if (abs(vektor(i))<0 0.2)
{
vektor(i)=0;
}
}


Gruß
Jochen

Autor: mar IO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was soll da Probleme machen bzw. zeig mal her was Du bis jetzt 
programmiert hast.

Autor: Saif K. (saif_k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich bin auch so umgegangen:
aber er zeigt statt ein vektor zu zeigen,zeigt nur der Wert von der 
length(vektor)
hier ist was ich so gemacht habe


/*
clc
close all
clear all
for t= 0:0.01:
     if(abs(sin(t))<0.3)
         sin(t)==0;
     end


end
plot(t,sin(t))

/*

es geht um eine aufgenommene Sprache.
meine vorgehen ist so :

Die sprache,die eine kleine Amplitude sind als Rauschen zu betrachten.
Die Sprache hat eine ganze anderes verlauf im Vergleich zu den Rauschen.

Autor: Saif K. (saif_k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sorry hier ist habe ich was vergessen :

clc
close all
clear all
for t= 0:0.01:20
     if(abs(sin(t))<0.2)
         sin(t)==0;
     end


end
plot(t,sin(t))

Autor: Jochen S. (jochen_s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey,

heißt dein Sprchsignalvektor sin??

du berechnest städig den Sinus neu aber du arbeitest nicht mit dem 
Sprachvektor oder?

Autor: mar IO (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Saif K. schrieb:
> sin(t)==0;

Soll das Matlab/Octave sein??? Doppelt = ist auch sicher eine Zuweisung?

Autor: Saif K. (saif_k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jochen S. schrieb:
> heißt dein Sprchsignalvektor sin?? ja
>
> du berechnest städig den Sinus neu aber du arbeitest nicht mit dem
> Sprachvektor oder?

ja ich weiss aber....
ich muss glaube ich den vektor wo anders speichern dann von dort ablesen 
?
Muss das es so gemacht werden?


sorry für die Anfänger Fragen?

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://de.wikipedia.org/wiki/Noise_Gate
Eine ähnliche Funktion heißt in der Audiotechnik "noise gate"
dabei wird aber nicht der Sinus abgeschnitten wie hier gezeigt, sondern 
der Signalpegel über längere Zeit gemessen und völlig unterdrückt, wenn 
er eine Schwelle unterschreitet.

Autor: Saif K. (saif_k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo alle zusammen,




Die Lösung für das oben gennanten problem wird so gelöst:

y(find(y<0.4&y>-0.4))=0;


Gruß
Saif

Autor: Saif K. (saif_k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo alle zusammen,


jetzt habe ich noch eine andere Frage.

es geht hier um eine Sprachsignal,die zwar mit rauschen gemischt ist.
Ich könnte zwar das rauschen unterdrücken aber leider ist die Sprache 
beschädigt und da muss es nicht sein.

Ich bin so umgegangen:
Die sprache hat eine bestimmte Verlauf .
alle werte die nicht diesen Verlauf entsprechen müssen gleich NULL 
gesetzt werden und zwar amplitudenmässig.

Ist man denkweise richtig oder liege ich falsch?

Mit freundlichen Grüßen
saif

Autor: Saif K. (saif_k)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
so was meine ich. Seh Anhang

Die Amplituden, die unter einen bestimmten Grenzen werden direkt gleich 
Null gesetzt aber solange das Signal eine Amplitude > gesetze Amplitude 
dürfte nicht gefasst werden so das man so quasi eine gespiegelte Gauss 
Funktion hat dann eine Linie dann wieder gespiegelte Gauss Funktion und 
so weiter..

Autor: Saif K. (saif_k)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo alle zusammen,

hier ist mein Ergebnis.Akustisch ist auch gut.Es könnte etwas besser 
sein.
Auf eure Bemerkung und Vorschläge bin ich dankbar.

Grüß
Saif

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.