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

Befehl um Frequenz eines Signals zu verändern

 

Sammy243
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 09.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.04.2018, 17:41     Titel: Befehl um Frequenz eines Signals zu verändern
  Antworten mit Zitat      
Hallo zusammen,

gibt es in Matlab einen Befehl womit ich die Frequenz eines Signals verändern kann?

Ich habe z.B. folgendes Signal



Dafür möchte ich z.B. die Frequenz verdoppeln:



Gibt es dazu etwas oder muss ich mir das selber basteln? Very Happy

Beste Grüße
Sammy
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.04.2018, 21:38     Titel:
  Antworten mit Zitat      
Hallo,

du brauchst eigentlich nur das selbe Signal zu verwenden und den Zeitvektor auf halbe Abtastzeit anzupassen.

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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 09.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.04.2018, 22:15     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank für deine Antwort.

Kannst du mir ein Vorgehen dazu erläutern? Embarassed
Ich habe einen Vektor mit 0en und 5en den ich dann praktisch skalieren muss?

Mein Konstrukt in den Plots ist sehr unschön gebaut:
Zeitvektor x1 = linspace(0,720,5000);

Zeitvektor x2 = linspace(0,360,5000);
Bei dem zweiten Plot (mit doppelter Frequenz) habe ich dann einfach
das Signal nochmal hinten dran gehängt. Confused
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.04.2018, 09:37     Titel:
  Antworten mit Zitat      
Hallo,

das Signal brauchst du überhaupt nicht zu verändern.
Du hast meinen Vorschlag mit dem Zeitvektor schon umgesetzt. Was ist daran unschön?

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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 09.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.04.2018, 11:55     Titel:
  Antworten mit Zitat      
Hallo Harald,

ich bin mir nicht sicher ob ich es richtig umgesetzt habe.
Ich habe halt wie beschrieben einfach das 1. Signal auf die halbe Zeit skaliert und dann nochmal hinten dran gehangen.

Aktuell gebe ich praktisch wie im Plot die 0-720 als 1 Sekunde lang raus.
Wenn ich jetzt bei meinem Vorgehen das ganze z.B. um 1.5 skaliere und dann nochmal
dranhänge, habe ich den unschönen Effekt, dass das ganze nicht mehr symmetrisch ist.

Ich hoffe das ist nicht zu verwirrend erläutert Confused

Mir ist auch noch nicht ganz klar, wie man am besten skaliert, also wie bekomme ich
z.B. aus diesem Vektor
[0 0 5 5 0 0 5 5 0 0 5 5 0 0 5 5]
diesen
[0 5 0 5 0 5 0 5 0 5 0 5 0 5 0 5]
?

Vielen Dank schonmal!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

z.B.
Code:


Skalieren bedeutet normal, mit einem Faktor zu multiplizieren. Du scheinst aber irgendetwas anderes damit zu meinen.

Zitat:
habe ich den unschönen Effekt, dass das ganze nicht mehr symmetrisch ist.

Inwiefern ist es nicht symmetrisch, und warum sollte es symmetrisch sein? Genauer gesagt: das ursprüngliche Signal ist nicht mal symmetrisch, warum sollte das neue Signal dann symmetrisch werden?

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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 09.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.04.2018, 15:55     Titel:
  Antworten mit Zitat      
Super, das hat mich auch wieder ein Stück weiter gebracht. Smile

In deinem Beispiel-Code skalierst du ja um den Faktor 2, wie könnte man soetwas
um einen nichtganzzahligen Faktor (z.B. 1.7) realisieren?

Genau da läge dann auch mein Problem, mit meinem bisherigen Verfahren würde
ich dann nämlich Teile des Signals abschneiden, wodurch der Abstand der Pulse nicht
mehr "symmetrisch" wäre.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
wie könnte man soetwas um einen nichtganzzahligen Faktor (z.B. 1.7) realisieren?

Da müsstest du erst mal sagen, wie das dann aussehen soll. Je nachdem kann eine Möglichkeit auch die Funktion resample sein.

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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 09.01.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.04.2018, 17:40     Titel:
  Antworten mit Zitat      
Du hast Recht, ohne den Hintergrund zu wissen macht das so keinen Sinn Very Happy

Das ganze soll ein Impulsradsignal simulieren. Der Plot ist dabei immer Ausgaberate 1 Sekunde (0-720). Wenn ich nun 100 Sekunden ausgeben möchte, hänge ich einfach
99mal den Plot (Vektor) hinten dran.

Wenn ich aber jetzt einen nichtganzzahligen Faktor nehme, schneidet er mir praktisch Teile heraus, da das Signal nach 1 Sekunde (720) nicht an der richtigen Stelle weiterläuft.

Wahrscheinlich ist mein Ansatz auch nicht der beste, aber anders habe ich es noch nicht
realisiert bekommen Confused Ich häng mal meinen Code an, die Drehzahl soll veränderbar sein:

Code:

drehzahl_in_m = 120;
gradzahl = (drehzahl_in_m / 60) * 360;

T = (gradzahl / ((gradzahl/720)*drehzahl_in_m))*10;
x = linspace(0,720,50000);

d = [(42/gradzahl)*720:T:720];
d2 = [(662/gradzahl)*720:(720/gradzahl)*720:720];  %extra Zahn

y1 = pulstran(x,d,'rectpuls',T/20)*5;
y2 = pulstran(x,d2,'rectpuls',T/20)*5;  %extra Zahn

y = y1 + y2;

plot(x,y);

% Hintereinanderreihung

sekunden = 100;
i = 1;
ende = length(y);

while i < 50000*sekunden;
   y_ges(i:i+(ende-1)) = y;
   i = i + ende;
end
 
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.