2016-04-27 13 views
1

Ich versuche, die periodischen Funktionen in Matlab der folgenden Gleichung zu zeichnen:für Schleifen und einen Array verwenden, um Fourier-Transformation von plotten Matlab

enter image description here

mit dem folgenden Code:

tn= 25; 
kn= 7; 

time=0:1:200; 
f=0; 

for t= (-tn):1:(tn) 

for k = (-kn):1:(kn) 

     s1=((1j)*k*exp(-abs(k))); 
     s2=exp((1j)*k*((2*pi)/50)); 

     f=f+(s1*s2); 
end 
      tval = (f*exp(t)); 
     fs(1,t+1) = tval; 
end 

Ich habe Probleme zu verstehen, warum ich die Handlung nicht sehen kann. Gibt es eine andere Möglichkeit, komplexe Zahlen in Matlab darzustellen?

Gehe ich in die falsche Richtung? Ich versuche einfach, fs gegen die Zeit zu zeichnen (könnte von 0-200 oder -100 - 100 für alles, was ich interessiere) und sehe die periodische Funktion, so dass ich weitermachen und es manipulieren kann, aber ich kann nicht einmal das richtige bekommen Handlung.

Ich habe versucht, die Symsum-Funktion in Matlab, aber konnte es nicht herausfinden. Ich verstehe C und C++ und fühlte, dass dieser Ansatz für mich intuitiver war.

edit:

x(1:101)=0; 
t(1:101)=0; 

for n=0:1:100 
    t(n+1)=n; 

    for k=-100:1:100 
     x(n+1)=x(n+1)+abs(sin((k*pi)/2))*exp(1j*k*((2*pi)/50)*n); 
    end; 
end; 

aufgetragen ich die Funktion den folgenden Code verwenden. Warum sehen unsere imaginären Plots anders aus?

+0

Können Sie Ihre Plotten Code zum Beispiel hinzufügen über? Ich bin mir nicht sicher, was genau Sie versuchen zu planen. – nalyd88

+0

Sie können keine komplexe Zahl (in 1D) plotten. Ich würde die Kosinus- und Sinuskomponenten getrennt betrachten (e (ix) = cos x + i sin x). – roadrunner66

Antwort

0

ich nicht Matlab haben, aber hier ist die gleiche in Python (mit Numpy & Matplotlib, die sehr ähnlich sind Matlab):

import numpy as np 
import matplotlib.pyplot as p 
%matplotlib inline 

t= np.arange(0,100,0.1) 
s=np.zeros(len(t)) 


for k in range(40): 
    s=s+ np.abs(np.sin (k*np.pi/2)) * np.exp(1j*k *2*np.pi/50.0*t) # pos k 
    s=s+ np.abs(np.sin (-k*np.pi/2)) * np.exp(- 1j*k *2*np.pi/50.0*t) # negative k 
    # the cosine is symmetric so it survives adding the negatives, 
    # the sines get cancelled as they are antisymmetric for the negative k, 
    # so the imaginary part is identically zero. 

p.subplot(311)  
p.plot(np.real(s)) 
p.subplot(312) 
p.plot(np.imag(s),'r') 
p.subplot(313) 
p.plot(np.abs(s)) 

enter image description here

+0

x (1: 101) = 0; t (1: 101) = 0; für n = 0: 1: 100 t (n + 1) = n; für k = -100: 1: 100 x (n + 1) = x (n + 1) + abs (sin ((k * pi)/2)) * exp (1j * k * ((2 *) pi)/50) * n); Ende; Ende; –

+0

Wenn es Ihnen geholfen hat und Sie denken, dass es anderen helfen könnte, können Sie es annehmen oder verbessern. – roadrunner66