|
MartinBruha |
Forum-Anfänger
|
|
Beiträge: 47
|
|
|
|
Anmeldedatum: 31.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.04.2010, 20:09
Titel: Schiebregister
|
|
Hallo zusammen,
kann mir jemand beraten, wie einen Schiebregister zu realisieren? Vielleicht ist es schon in der Simulink Library vorgefertigt, nur habe ich es nicht gefunden.
Ich will damit dann eine FFT eines Signals durchzuführen. Das Signal bekomme ich aus einem Modell (sehr komplex..), speichere in workspace und aus workspace brauche ich es dann wieder einlesen und FFT analysieren.
Vielen Dank für jede Idee
Martin
_________________
Martin Bruha
|
|
|
|
|
MartinBruha |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 47
|
|
|
|
Anmeldedatum: 31.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.04.2010, 19:44
Titel:
|
|
Niemand mit guter Idee???
_________________
Martin Bruha
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.04.2010, 08:18
Titel:
|
|
Willst Du die FFT nach der Simulation auf das Signal werfen oder muss das alles während der Simulation passieren?
Wenn es nach der Simulation passieren soll, guck Dir mal den To Workspace-Block in der Sinks-Bibliothek an.
|
|
|
MartinBruha |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 47
|
|
|
|
Anmeldedatum: 31.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.04.2010, 10:20
Titel:
|
|
Ich habe einen Block, der die FFT während der Simulation macht. Das ist aber nicht so praktisch, da mein Modell sehr komplex und umfangreich ist und die FFT würde es noch viel mehr bremsen. Deshalb möchte ich das Signal erst nach der Simulation analysieren.
Ich versuchte mit From Workspace die gespeicherten Daten für FFT liefern, aber dann stimmen die Dimensionen des Eingangvektors nicht mehr..
So habe ich gedacht, dass ich den Signalvektor mit einem Schiebregister in den FFT Block schicke, mit gleichem Schritt wie während der Simulation. So sollte das gehen, oder?
_________________
Martin Bruha
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.04.2010, 10:46
Titel:
|
|
Also brauchst Du die Ergebnisse der FFT nicht zur Simulationszeit, richtig?
Dann einfach die Simulation wie gewohnt durchführen und die Werte mit dem To-Workspace-Block in den Workspace schreiben. Da steht dir dann in der Variablen Zeitvektor + Datenvektor zur Verfügung. Damit solltest Du dann die FFT durchführen können.
|
|
|
MartinBruha |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 47
|
|
|
|
Anmeldedatum: 31.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.04.2010, 11:35
Titel:
|
|
Ja, so habe ich es auch gedacht. Leider funktioniert es nicht. Der FFT Block erwartet andere Dimensionen.
Wenn ich die FFT eines Signals während der Simulation durchführe, stelle ich die Dimension auf 1 ein, wenn ich FFT von einem Signal aus dreiphasigen System mache, dann ist die Dimension 3.
Ich kann aber nicht so einfach die gespeicherten Werte dem Block als Eingangssignal geben, dann stimmen die Dimensionen nicht. Deshalb möchte ich es so quasi "dosieren".
Das Problem ist, dass ich gar keinen Zeitvektor verwende. Im FFT Block stelle ich die Abtastzeit von diskreten Werten meines Signals und den Simulationsschritt.
_________________
Martin Bruha
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.04.2010, 11:51
Titel:
|
|
Muss denn die FFT unbedingt über Simulink gemacht werden?
|
|
|
MartinBruha |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 47
|
|
|
|
Anmeldedatum: 31.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.04.2010, 12:21
Titel:
|
|
Die FFT muss nicht unbedingt über Simulink gemacht werden. Ich hatte den Block zur Verfügung, dann dachte ich, dass es so einfach sein könnte. Aber tatsächlich ist es nicht so.
Ich habe vorher auch den Command fft benutzt, dann schreibt aber Matlab, dass es mit Daten im double Format nicht geht..
_________________
Martin Bruha
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.04.2010, 13:43
Titel:
|
|
Poste mal den Code, wie Du die Variable vom ToWorkspace in die FFT-Funktion von Matlab transportierst. Normalerweise kann die FFT-Funktion schon mit double umgehen.
|
|
|
MartinBruha |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 47
|
|
|
|
Anmeldedatum: 31.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.04.2010, 10:12
Titel:
|
|
Also es funktioniert schon.
Ich habe es laut dem einfachen Beispiel gemacht, das in doc fft steht:
t = 0:0.001:0.6;
x = sin(2*pi*50*t)+sin(2*pi*120*t);
y = x + 2*randn(size(t));
plot(1000*t(1:50),y(1:50))
title('Signal Corrupted with Zero-Mean Random Noise')
xlabel('time (milliseconds)')
Y = fft(y,512);
Pyy = Y.* conj(Y) / 512;
f = 1000*(0:256)/512;
plot(f,Pyy(1:257))
title('Frequency content of y')
xlabel('frequency (Hz)')
Das ist ein Beispiel für die Abtastfrequenz 1kHz. Wenn in meinem Fall die Abtastfrequenz z.B. 5 kHz ist, wäre dann die x-Achse mit Frequenz so modifiziert?
f=5000*(0:256)/512;
Und wie kann ich die fft programmieren, dass z.B. der DC Anteil auf Null gesetzt wird oder nicht abgebildet wird?
Ich untersuche nämlich die Welligkeit des Drehmoments, der DC Anteil ist dann der grösste, interessiert mich jedoch nicht.
Vielen Dank für ihre Vorschläge und Ideen!
_________________
Martin Bruha
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|