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

Matlab Fourier transformation

 

Lab21
Forum-Anfänger

Forum-Anfänger


Beiträge: 38
Anmeldedatum: 10.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.11.2013, 16:39     Titel: Matlab Fourier transformation
  Antworten mit Zitat      
Hallo leute ich habe gerade probleme bei einer Aufgabe:

Gegeben seien folgende Signale:
x1(t ) 3sin(50* 2 *pi* t = × p × t ) + 6sin(80* 2pi * t ) + 2sin(200 *2pi * t )
x2 (t ) = sin(50* 2pi *t ) + 6cos(100 *2pi * t ) + 2sin(250 *2pi *t )
Für die Generierung der Signale gelten folgende Parameter:
Gemeinsame Grundfrequenz f0 = 10Hz
Zeitauflösung Dt = 0.1ms (Schrittweite des Zeitvektors)
Anzahl Abtastwerte N = 1000
a) Generieren Sie den Zeitvektor und die Signale x1 und x2. Der letzte Wert des Zeitvektors soll dabei genau end t = N * Dt betragen.
b) Berechnen Sie das Amplituden- und Phasenspektrum der Signale x1 und x2 durch
numerische Integration bis n=25 mithilfe der Formeln
Gleichanteil n=0:

Die formel poste ich als datei:

Stimmt mein Ansatz so?

Code:



clear all; close all; clc;

% Aufgabe  a)

f0 = 10;

dt =  0.1e-3;

N = 1000;

T0 = 1/f0;

tend = N*dt;

x1t = 3*sin(50*2*pi*t) + 6*sin(80*2*pi*t) +2*sin*(200*2*pi*t);

x2t = sin(50*2*pi*t) +6*cos(100*2*pi*t)+2*sin(250*2*pi*t);

z = 0:dt: tend;

%b)

for n=1:20;
   
    a(n+1) = 2/T0*trapz(t,x.*cos(n*2*pi*f0*t));
   
    b(n+1) = 2/T0*trapz(t,x.*sin(n*2*pi*f0*t));
   
   
   
   
   
   
   
   
end

%Amplitude

D = abs(a-j*b);

phi = angle(a-j*b).*(D>1e-12);

%Berechnung des doppelten Gleichanteils.

a(1) = 2/T0*trapz(t,x);

D(1) = a(1)/2;

phi(1) = 0;



 


Mir werden folgende Fehler angezeigt , die ich nicht verstehe warum die mir angezeigt werden .

Undefined function or variable 't'.

Error (line 15)
x1t = 3*sin(50*2*pi*t) + 6*sin(80*2*pi*t)
+2*sin*(200*2*pi*t);

Könnt ihr mir helfen den Fehler zu beseitigen ?

Stimmt mein code inhaltlich?

Unbenannt.png
 Beschreibung:

Download
 Dateiname:  Unbenannt.png
 Dateigröße:  16.22 KB
 Heruntergeladen:  338 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.11.2013, 17:10     Titel:
  Antworten mit Zitat      
Hallo,

t ist nicht bekannt, weil du es nicht definiert hast.
Vielleicht wolltest du statt z = ... eher t = ... schreiben? Ist ja auf der Tastatur nah beieinander. Dann müsstest du die Definition von t aber auch vor die erste Verwendung von t ziehen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Lab21
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 38
Anmeldedatum: 10.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.11.2013, 17:36     Titel:
  Antworten mit Zitat      
Code:


clear all; close all; clc;

% Aufgabe 6 Labor a)

f0 = 10;

dt =  0.1e-3;

N = 1000;

T0 = 1/f0;

tend = N*dt;

t = 0:dt: tend;

x1t = 3*sin(50*2*pi*t) + 6*sin(80*2*pi*t) +2*sin*(200*2*pi*t);

x2t = sin(50*2*pi*t) +6*cos(100*2*pi*t)+2*sin(250*2*pi*t);


%b)

for n=1:20;
   
    a(n+1) = 2/T0*trapz(t,x.*cos(n*2*pi*f0*t));
   
    b(n+1) = 2/T0*trapz(t,x.*sin(n*2*pi*f0*t));
   
   
   
   
   
   
   
   
end

%Amplitude

D = abs(a-j*b);

phi = angle(a-j*b).*(D>1e-12);

%Berechnung des doppelten Gleichanteils.

a(1) = 2/T0*trapz(t,x);

D(1) = a(1)/2;

phi(1) = 0;



 



Trotzdem wir mir jetzt der Fehler angezeigt:

Error using sin
Not enough input arguments.

Error in (line 17)
x1t = 3*sin(50*2*pi*t) + 6*sin(80*2*pi*t)
+2*sin*(200*2*pi*t);

Jetzt habe ich noch eine andere frage :

Meine musterlösung sieht so aus:

Code:



% a)
f0=10;
dt = 0.1e-3;
N = 1000;
t=0:dt:N*dt; % Zeitvektor

% Erzeugung der Signale
x1 = 3*sin(50*2*pi*t) + 6*sin(80*2*pi*t) + 2*sin(200*2*pi*t);
x2 = 1*sin(50*2*pi*t) + 6*cos(100*2*pi*t) + 2*sin(200*2*pi*t);

% b)
%Berechnung des Fourierspektrums für 25 Werte
%Integriert wird über eine ganze Zahl n von Perioden, entspricht 0...n*2Pi
T0=1/f0;            % Periodendauer von x1
for k=1:25
        A1(k+1)=2/T0*trapz(t,x1.*cos(2*pi*f0*k*t));
        B1(k+1)=2/T0*trapz(t,x1.*sin(2*pi*f0*k*t));
        A2(k+1)=2/T0*trapz(t,x2.*cos(2*pi*f0*k*t));
        B2(k+1)=2/T0*trapz(t,x2.*sin(2*pi*f0*k*t));
end
D1=abs(A1-j*B1);               %Amplitude
phi1=angle(A1-j*B1).*(D1>1e-9); %Phase. "Rechenungenauigkeiten" wurden bereits eliminiert
D2=abs(A2-j*B2);              
phi2=angle(A2-j*B2).*(D2>1e-9);

A1(1)=2/T0*trapz(t,x1);       %Berechnung des doppelten Gleichanteils
D1(1)=A1(1)/2;
phi1(1)=0;
A2(1)=2/T0*trapz(t,x2);
D2(1)=A2(1)/2;
phi2(1)=0;


 



Warum haben die in der Musterlösung das gemacht ?

Code:


A2(k+1)=2/T0*trapz(t,x2.*cos(2*pi*f0*k*t));
        B2(k+1)=2/T0*trapz(t,x2.*sin(2*pi*f0*k*t));

 



Das verstehe ich nicht .

Kann mir das jemand erklären ?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

was die Fehlermeldung angeht: schau dir die Zeile mal ganz genau an - insbesondere die sin-Aufrufe, dann solltest du das nun wirklich selbst sehen.

Was die Frage zur Musterlösung angeht: du hast zwei Signale und zu jedem sollen A_i und B_i berechnet werden, wie es nunmal bei Fourierreihen ist.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Lab21
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 38
Anmeldedatum: 10.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.11.2013, 18:55     Titel:
  Antworten mit Zitat      
Ich verstehe immer noch nicht so ganz. Wo liegt der Fehler ?

Ich verstehe aber immer noch nicht warum die das bei der fourierreihe so gerechnet haben.

Kannst du mir das nicht irgendwie bitte erklären ?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.11.2013, 19:15     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Ich verstehe immer noch nicht so ganz. Wo liegt der Fehler ?

An dem * zwischen dem letzten sin und seinem Argument.

Zitat:
Ich verstehe aber immer noch nicht warum die das bei der fourierreihe so gerechnet haben.
Kannst du mir das nicht irgendwie bitte erklären ?

Schau dir doch mal die Formeln an.
http://de.wikipedia.org/wiki/Fourierreihe#Allgemeine_Form

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Lab21
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 38
Anmeldedatum: 10.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.11.2013, 19:58     Titel:
  Antworten mit Zitat      
Ich verstehe leider immer noch nicht, warum die nochmal A2 und B2 berechnen ?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.11.2013, 20:34     Titel:
  Antworten mit Zitat      
Hallo,

weil die Berechnung für zwei verschiedene Signale (x1 und x2) erfolgt.
Zwei Signale, zwei verschiedene Koeffizientensätze --> 4 Befehle.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Lab21
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 38
Anmeldedatum: 10.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.11.2013, 21:57     Titel:
  Antworten mit Zitat      
Puuh ich habe schon wieder eine Fehlermeldung :

Undefined function or variable 'x'.

Error in (line 26)
a(n+1) = 2/T0*trapz(t,x.*cos(n*2*pi*f0*t));

Wie soll ich denn beseitigen?

Tut mir leid dass ich dich wieder nerven muss.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.11.2013, 22:16     Titel:
  Antworten mit Zitat      
Hallo,

das Problem hatten wir doch schon.
Du solltest schon zumindest aus den Problemen lernen und wie du sie selbst beheben kannst.

Hier: x ist nicht definiert und kann daher nicht verwendet werden. Was könnte denn sinnvoll statt x verwendet werden? Anders gefragt: wie heißen die Signale, von denen du die Fourierreihen berechnen willst?

Grüße,
Harald
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 - 2025 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.