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

Kosinus in Matlab

 

al3ko

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.09.2011, 17:40     Titel: Kosinus in Matlab
  Antworten mit Zitat      
Hi Leute,
eine simple Aufgabe, für die ich zu blöd bin (oder aber genau das, was ich rausbekomme, ist gewollt):
Ein Kosinussignal soll erstellt werden, das im Interval von 0 bis 2*PI 10 Perioden aufweist. Fürn Plot sollen 100 Punkte verwendet werden.

Mein Ansatz:
Die Funktion lautet f(x)=cos(10*x).

Hier mein Matlab Code:
Code:
x=0:2*pi/(100-1):2*pi; %Erstellt einen vektor mit 100 Elementen im Bereich von 0 bis 2*Pi
figure(1)
plot(x,cos(10*x))
axis([0 2*pi -1 1])
 


Das Ergebnis befindet sich im Anhang. Ist mein Ansatz überhaupt richtig? Irgendwie gefällt mir der Plot nicht wirklich Sad

Ich poste hier im Signalverarbeitungsforum, weil das die Einführung in unseren DSP Kurs ist und der Aufgabenzettel mit Sampling, Aliasing etc. zu tun hat.

Über eine Antwort freue ich mich sehr!

Vielen Dank im Voraus.

Gruß,
al3ko

Untitled.png
 Beschreibung:

Download
 Dateiname:  Untitled.png
 Dateigröße:  14.06 KB
 Heruntergeladen:  1213 mal


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.09.2011, 18:14     Titel:
  Antworten mit Zitat      
Hallo,

die Abtastung ist einfach nicht fein genug. Probiers mal mit 1000 Stützpunkten.
Wenn du einen gleichmäßig unterteilten Vektor mit N Stützstellen haben willst, ist LINSPACE übrigens geschickter als : .

Grüße,
Harald

P.S.: bitte in Zukunft dazu sagen, *was* dir an dem Plot nicht gefällt. Das kann man ja nicht immer riechen.
Private Nachricht senden Benutzer-Profile anzeigen
 
al3ko

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.09.2011, 22:42     Titel:
  Antworten mit Zitat      
Hi Harald.

Danke erstmal für deine Antwort.

Harald hat Folgendes geschrieben:
die Abtastung ist einfach nicht fein genug. Probiers mal mit 1000 Stützpunkten.


Das ist genau mein Ansatz bzw. der Aspekt, auf den ich in meiner Ausarbeitung eingehen würde/wollte.

Harald hat Folgendes geschrieben:
Wenn du einen gleichmäßig unterteilten Vektor mit N Stützstellen haben willst, ist LINSPACE übrigens geschickter als : .


Ja, von linspace habe ich auch schon gelesen, allerdings hat der Lehrer davon abgeraten (siehe Anhang).

Zitat:
P.S.: bitte in Zukunft dazu sagen, *was* dir an dem Plot nicht gefällt. Das kann man ja nicht immer riechen.

Da hast du recht, Harald, das war zu schwammig formuliert. Mir gefällt an dem Plot nicht, dass die Amplitude vom Kosinus von 0 bis ca. Pi abfällt und dann von ca. Pi bis 2*Pi wieder ansteigt. Und wenn ich in der Mitte des Bildes (nämlich bei Pi) eine senkrechte Linie ziehe und die linke Hälfte an der Linie spiegel, dann erkenne ich eine Symmetrie.

Weshalb ich so verwundert bin (und deshalb hier um Hilfe bitte), ist, dass wenn ich meinen Vektor x wie folgt definiere:

Code:
x=0:2*Pi/100:2*Pi

besitzt er 101 Elemente, aber bleibt die Amplitude des Kosinus konstant (siehe ebenfalls Anhang).

Kosinus.png
 Beschreibung:

Download
 Dateiname:  Kosinus.png
 Dateigröße:  61.25 KB
 Heruntergeladen:  1161 mal
Aufgabe.png
 Beschreibung:

Download
 Dateiname:  Aufgabe.png
 Dateigröße:  42.91 KB
 Heruntergeladen:  1170 mal
 
al3ko

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.09.2011, 22:46     Titel:
  Antworten mit Zitat      
Deshalb bin ich mir unsicher, ob ich meinen Vektor x mit

Code:
x=0:2*Pi/(100-1):2*Pi


für diese Aufgabenstellung falsch definiere.

Gruß,
al3ko
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 12.09.2011, 00:33     Titel:
  Antworten mit Zitat      
Das ist schon richtig so...

man kann das 2*pi ja auch ausklammern, so dass sich cos(2*pi*f * x) ergibt (wobei f in deinem Bsp = 10 Hz ist). Das Abtasttheorem ist mit fs = 99 Hz (bei 100 Messwerten) zwar nicht verletzt, aber dennoch zu gering um das Signal in den Extrema exakt darzustellen. Bei 101 Werten bzw. fs = 100 ist das halt ein Vielfaches der Signalfrequenz, weshalb du immer die Extremstellen triffst.

Man kann hier LINSPACE sehr wohl verwenden...

Code:
linspace(0,0.9,10) % == (0:9)/10
% oder
linspace(0,1,10) % == 0:1/(10-1):1
 
Private Nachricht senden Benutzer-Profile anzeigen
 
al3ko

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.09.2011, 09:27     Titel:
  Antworten mit Zitat      
Hi DSP,
bei mir ist immernoch irgendwo der Wurm drinnen:
DSP hat Folgendes geschrieben:
Das Abtasttheorem ist mit fs = 99 Hz (bei 100 Messwerten) zwar nicht verletzt, aber dennoch zu gering um das Signal in den Extrema exakt darzustellen. Bei 101 Werten bzw. fs = 100 ist das halt ein Vielfaches der Signalfrequenz, weshalb du immer die Extremstellen triffst.


Wenn wir 100 Messwerte haben, wieso kommst du auf eine Abtastfrequenz von fs=99 Hz? Wir haben im Bereich von 0 bis 2*pi (eine ganze Periode) 100 Messwerte, dann ist doch die Abtastfrequenz 100 Hz?
Gleiches gilt für 101 Messwerte und fs=100 Hz. Meiner Ansicht nach wären das 101 Hz.
Wieso bin ich immer 1 Hz zu viel - wo ist mein Verständnisproblem?

Aah, moment mal:
Es liegt wahrscheinlich daran, dass wir uns bei 2*pi einmal im Kreis gedreht haben und somit wieder bei 0 sind. Somit ist quasi ein Wert doppelt und zählt auch nur als ein Messwert.

Richtig?
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 12.09.2011, 12:16     Titel:
  Antworten mit Zitat      
Die allgemeine Formel für die Zeitachse t (du hast es x genannt) ist doch

Code:

t_start:(t_end - t_start)/(N - 1):t_end
t_start = 0;
t_end = 1;
N = 100; % Anzahl der Werte
% mit den Werten folgt:
t = (0:1/99:1) % * 2*pi ausgeklammert
 


Somit ist doch die Abtastrate Ts = 1/99 und fs = 1/Ts = 99 Hz
Private Nachricht senden Benutzer-Profile anzeigen
 
al3ko
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 12.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.09.2011, 14:10     Titel:
  Antworten mit Zitat      
Hi DSP,
danke für deine Antwort. Wäre dann folgende Überlegung richtig:

Die Frequenz des Kosinus beträgt 10 Hz. Laut Abtasttheorem muss meine Abtastfrequenz zwei mal der Frequenz des Signals sein:
fs=2*10 Hz = 20 Hz.

Also brauche ich einen Vektor, der 21 Elemente innehält. Nennen wir diesen Vektor mal x1, dann müsste x1 so lauten:

Code:
x1=2*pi*(0:1/20:1)


Somit habe ich einen Vektor, der 21 Elemente hat und demnach ist die Abtastfrequenz 20 Hz, also gerade noch gut genug um das Ursprungssignal rekonstruieren zu können.

Stimmst du damit überein?

Falls ja, wie kann ich das Ursprungssignal rekonstruieren? Wenn ich beispielsweise mit 21 Hz abtaste, ist das Theorem nicht verletzt. Ein einfaches

Code:


führt zu lustigen Ergebnissen, siehe Anhang. Wobei, im Prinzip ist es genau dasselbe wie mit 99 Hz. Nur ist es hier um einiges krasser.

Ich bin mit DSP und Fourier noch nicht sehr bewandert. Theoretisch wäre doch der nächste Schritt eine Fourier Analyse, um die Grundwelle und all die Oberwellen zu kommen. Anschließend jagen wir alles durch einen idealen Tiefpassfilter und das Ursprungssignal ist wieder da.

Right?

Danke und Gruß

Untitled.png
 Beschreibung:

Download
 Dateiname:  Untitled.png
 Dateigröße:  49.63 KB
 Heruntergeladen:  1154 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 12.09.2011, 20:51     Titel:
  Antworten mit Zitat      
Im ersten Teil stimme ich dir zu...bei 20 Hz trifft man jeweils die Extrema des Cosinus. Warum dann mit 21 Hz ein für meine Aufassung falsch abgetastetes Signal entsteht, verstehe ich allerdings auch nicht. Es ist einem unterabgetastenten Signal mit fs = 19 Hz sehr ähnlich.

Habe hier noch mal ein kleiner Bsp. wo der Zusammenhang evtl. deutlicher wird. Die Abtastrate ist unabhängig von der Signallänge (Anzahl Messwerte). Die Anzahl der Messwerte hat somit keine Einfluss, sondern bestimmt lediglich die Anzahl der Perioden im Messfenster Wink

Code:
f = 10; % Frequenz in Hz des Cosinus Signals
% Abtasttheorem: fs >= 2*f
fs = 22; % Abtastfreq. in Hz
Ts = 1/fs; % Abtastrate
N = 40; % Anzahl samples
t=0:Ts:(N-1)*Ts; % Zeitvektor
figure(1)
plot(t,cos(2*pi*f*t),'r.-')


Hier habe ich noch ein Verständnisproblem:

Zitat:
Theoretisch wäre doch der nächste Schritt eine Fourier Analyse, um die Grundwelle und all die Oberwellen zu kommen. Anschließend jagen wir alles durch einen idealen Tiefpassfilter und das Ursprungssignal ist wieder da.


Wenn das Signal korrekt abgetastet ist und sich zu dem volle Perioden im Messfenster befinden (Vermeidung des Leakage Effekt), wird bei einem Cosinus lediglich eine Spektrallinie gemäß der Signalfrequenz im FFT-Spektrum auftauchen. Warum also Oberwellen und das Filter?
Private Nachricht senden Benutzer-Profile anzeigen
 
al3ko
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 12.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.09.2011, 21:35     Titel:
  Antworten mit Zitat      
Hallo DSP,
DSP hat Folgendes geschrieben:
Wenn das Signal korrekt abgetastet ist und sich zu dem volle Perioden im Messfenster befinden (Vermeidung des Leakage Effekt), wird bei einem Cosinus lediglich eine Spektrallinie gemäß der Signalfrequenz im FFT-Spektrum auftauchen. Warum also Oberwellen und das Filter?


So steht es in meinem Buch:
"...f(t) can be recovered from its samples f_hat(t) by passing the sampled signal f_hat(t) through an ideal low pass filter of bandwidth B Hz."

Ferner steht geschrieben:
"The process of reconstructing... is also known as interpolation... This reconstruction is accomplished by passing the sampled signal through an ideal lowpass filter of bandwidth B Hz..."

Signal Processing and Linear Systems by Lathi.

Dort ist auch noch eine Formel mit angegeben, für die ich aber zu faul bin, das abzutippen. Im Anhang kann man sie finden (Gleichung 5.3).

Deshalb fragte ich nach, wie man aus den 21 Messwerten das Originalsignal wiederherstellen kann (gibt es dafür eine bestimmte Funktion bereits in Matlab?).

Ich frage sonst am Donnerstag mal meinen Professor, wobei ich mir sicher bin, dass wir das noch behandeln werden (hatten erst zwei Vorlesungen in DSP und gerade mal Anfänge behandelt).

Gruß

Untitled.png
 Beschreibung:

Download
 Dateiname:  Untitled.png
 Dateigröße:  81.08 KB
 Heruntergeladen:  1134 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.