WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Filtern von Vektor

 

galilio
Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 15.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.10.2010, 18:18     Titel: Filtern von Vektor
  Antworten mit Zitat      
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 .
Danke in Voraus
Private Nachricht senden Benutzer-Profile anzeigen


galilio
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 15.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.10.2010, 19:28     Titel:
  Antworten mit Zitat      
Das ist ein Beispiel wie es ungefähr gemacht werden muss.
Die Daten,die unter einen bestimmten amplitude mussen einfach gleich Null gesetz werden

Unbenannt.PNG
 Beschreibung:

Download
 Dateiname:  Unbenannt.PNG
 Dateigröße:  38.22 KB
 Heruntergeladen:  800 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Jonsy
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 05.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2010, 08:12     Titel:
  Antworten mit Zitat      
Moin moin,

bitte berichtigt mich wenn ich jetzt falsch liege, aber das müsste mit "find" Funktionieren.

Beispiel mit deinen Sinus:
Code:


x =0:0.01:100;
y = sin(x);

y(find(y<0.2)) = 0;

plot(y)
 


Du darfst nicht "==" verwenden wenn du etwas ersetzen willst, den soweit ich weiß ist "==" ein logischer Operator.

MfG Jonsy
Private Nachricht senden Benutzer-Profile anzeigen
 
galilio
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 15.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2010, 08:45     Titel:
  Antworten mit Zitat      
Hallo,

danke erst mal für die antwort.
Ja es klappt leider nicht so ganz.
Nur die positives Werte von y sind gezeigt.

Es muss normaleweise wie in der Abbildung zeigen.
Ich habe auch so y(find(abs(y<0.2))) = 0 versucht aber er zeigt trozdem nur die positves werte von y .

gruß
galilio
Private Nachricht senden Benutzer-Profile anzeigen
 
galilio
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 15.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2010, 09:25     Titel:
  Antworten mit Zitat      
hallo,


so klappt es :y(find(y<0.2&y>-0.2))=0;


Danke Jonsy
Private Nachricht senden Benutzer-Profile anzeigen
 
galilio
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 15.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2010, 16:26     Titel:
  Antworten mit Zitat      
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
galilio
Private Nachricht senden Benutzer-Profile anzeigen
 
Jonsy
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 05.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2010, 17:33     Titel:
  Antworten mit Zitat      
Hmm, ich denke sowas lässt sich nur mit verschiedenen Hoch-, Tief- oder Bandpässen realisieren, aber keine Ahnung wie genau.
Private Nachricht senden Benutzer-Profile anzeigen
 
galilio
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 15.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2010, 17:58     Titel:
  Antworten mit Zitat      
so was in der Art meine ich.
seh Anhang

Unbenannt1.png
 Beschreibung:

Download
 Dateiname:  Unbenannt1.png
 Dateigröße:  1002.2 KB
 Heruntergeladen:  811 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Jonsy
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 05.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2010, 21:10     Titel:
  Antworten mit Zitat      
Dann nimmst du einen Tiefpassfilter (Forum Suchfunktion nutzen) und stellst diesen so ein das die tiefe Frequenz (die Wellen mit großen abstand) nicht gefiltert werden. Wenn du dieses Signal Fourie-Transformierst siehst du besser was ich meine und wie du den Filter konfigurieren musst.

Ich muss dir aber sagen das es höchstwahrscheinlich nicht so einfach wird, den ein echtes Audiosignal kann man nicht so "einfach" von Rauschen und Störungen befreien.

Lg Jonsy
Private Nachricht senden Benutzer-Profile anzeigen
 
galilio
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 15.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2010, 21:23     Titel:
  Antworten mit Zitat      
Hallo,


ich weiss dass es in Frequenzbereich nicht so schwer ist und habe ich auch gemacht aber ich möchte das Signal in Zeitbereich bearbeiten,da ich das Prog nachher in eine Mikrocontrollen umschreiben muss und die leider kein DSP unterstüzt.
Aus diesem grund versuche ich die ganze bearbeitung so ungefähr ausdenken und versuchen mit wenigen schaden zu realisieren.


Ich werde mir die Sachen noch einmal gucken lösbar ist aufjedenfall
Was ich bis jetzt gemacht habe ist nicht o ganz zufrieden stellen ist, da es auch bei filterung das Signal auch geschnitten wird und das ist nicht so ganz okay.... muss mir das noch einmal schauen....
Danke aber trotzdem

Ich finde hier in Forum echt schade ....
Keine Interesse oder warum kein sich beteiligen möchte ...
In anderen Forum ist die Aktivität etwas große

so denn bis bald
Viel Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.11.2010, 23:00     Titel:
  Antworten mit Zitat      
Hallo galilio.

Code:

y(find(y<0.2&y>-0.2)) = 0;
% Deutlich schneller:
y(y<0.2&y>-0.2) = 0;
 


Zitat:
Ich finde hier in Forum echt schade ....
Keine Interesse oder warum kein sich beteiligen möchte ...
In anderen Forum ist die Aktivität etwas große

Du hast Dein Problem nicht genau beschrieben. Ich find Dein Bild zwar sehr orginell. Aber es wird nicht klar, wie an dem Signal, das weggeschnitten werden soll, mathematisch definiert ist: hohe Frequenz, niedrige Amplitude, länge der Abschnitte?!
Bedenke: Über 1e-6sec kann jedes Sprachsignal eine hohe Frequenz und niedrige Amplitude haben.

Wenn das Problem also nicht genau beschrieben wird, ist eine Antwort eventuell sehr aufwändig. Deshalb sind die Antworten vielleicht etwas rar.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
galilio
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 15.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.11.2010, 09:35     Titel: zwischen Ergebnis
  Antworten mit Zitat      
Hallo,

Danke für die Antwort Jan.
Hier wollte ich euch mein Ergebnis zeigen,die etwas verbesserung bedürftig sein kann.

Was ich noch machen möchte ist:

1- eine Lange Folge von Null >5 zu einen Null setzen
2- eine Kurze Peek-->zu Null setzen(seh Anhang)

--> in diesen Aufgabe habe ich die Sprache aufgenommen mit verschiedene Lärmhintergründe Wie zb Musik .... dann nehme ich direkt die Sprache auf und dann einmal plotten vor der Filterung und einmal Plotten nach dem Filtereung und am Ende Sound(sig,fs).


Gruß
Saif

Nicht_gefilter_sig.png
 Beschreibung:

Download
 Dateiname:  Nicht_gefilter_sig.png
 Dateigröße:  23.97 KB
 Heruntergeladen:  807 mal
gefilterte_signal.png
 Beschreibung:
Hier ist zu sehen die rot gemahlten Peek (Peak) und die lange Null Folge

Download
 Dateiname:  gefilterte_signal.png
 Dateigröße:  25.1 KB
 Heruntergeladen:  820 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.