da ich zu wenig Erfahrung mit Python habe benötige ich Hilfe bei der Darstellung und Auswertung eines erzeugten Signal.
Nach ein paar Tagen suche/programmieren sehe ich leider kein brauchbares Ergebnis.
Ich arbeite im IDLE mit neuester Python-Version 3.6.
Das Signal soll sich aus drei Teilen zusammensetzten: x(t)= Ac*cos(2*pi*fc*t) + As*sin(2*pi*fs*t)+ Rauschen
Wobei Ac und As die Amplituden für cos und sin Funktion sind, fc und fs die Frequenzanteile von cos und sin. Das Rauschsnignal soll den Ampitudenwert 1 besitzen.
Die Abtastfrequenz soll 1kHz betragen und weiterhin soll sich das Signal aus 4096 Werten zusammensetzen.
Anschließend soll die FFT berechnet und dargestellt werden (später).
Code: Alles auswählen
import matplotlib.pyplot as plt
import numpy as np
#Signaldaten
Fs = 1000 # Hz Abstastfrequenz
Ts = 1/Fs # Abtastintervall
fc = 100 # Hz Cosinusschwingung
fs= 225 # Hz Sinunsschwingung
Ac=5 # Amplitude Cosinusanteil
As=3 #Amplitude Sinusanteil
Ar=1 #Ampitude Rauschsignal
#Signalerzeugung
sample = 4096
x = np.arange(sample)
Fc=Ac * np.cos(2*np.pi*fc*(x/Fs)) #Cosinussignal
Fs=As * np.sin(2*np.pi*fs*(x/Fs)) #Sinussignal
Fn=Ar * np.random.normal(0, 1, len(x)) #Rauschanteil
Fg=Fc+Fs+Fn #Gesamtsignal
# Signaldarstellung
startx, endx = 0, 100
starty, endy = -6,10
plt.xlabel('Zeit')
plt.ylabel('Funktionswert')
plt.title('Signal')
plt.axis([startx, endx, starty, endy])
plt.stem(x,Fg, 'r', )
plt.plot(x,Fg)
plt.show()
-> Das daraus dargestellte Abtastintervall erscheint mir zu groß.
-> Das Rauschsignal erscheint mir auch nicht richtig.
Für Matlab sieht der Code mit FFT so aus:
t=[0:4095]*0.001; % f_S = 1000 Hz
x=5*cos(200*pi*t)+3*sin(450*pi*t)+randn(size(t));
plot(t,x)
axis([0 .1 -10 10])
X=fft(x);
f=[0:2047]*500/2048;
plot(f,abs(X(1:2048)))
Vielen Dank schon mal für Hilfe!
Lg, PC-Hans