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

Shiften von i und q Daten

 

anirac01
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 26.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2010, 13:33     Titel: Shiften von i und q Daten
  Antworten mit Zitat      
Hallo,

Ich habe ein Signal S das aus einem realen (q) und imaginären Teil (i) besteht. Nun möchte ich eine Funktion bauen in der ich als input die beiden Teile i und q habe. Als Ausgabe möchte ich dann wieder i und q haben und einen Wert um den ich geshiftet hab.

Das Signal S kann ich mit 'imag' und 'real' in zwei Teile aufspalten oder?

In meiner Funktion habe ich dann zwei Vektoren i und q
i [1|2|....|n]
q [1|2|....|n]

i' [1|2|...|n-1]
q' [2|3|...|n]

ich hab nun beide Vektoren um eins geshiftet, theoretisch Wink wie kann ich dies praktisch in Matlab realisieren? und wie kann ich dann real und imaginär Teil wieder zusammen führen?

Kann mir jemand helfen?

grüße
Private Nachricht senden Benutzer-Profile anzeigen


aj.geissler
Forum-Guru

Forum-Guru



Beiträge: 251
Anmeldedatum: 26.11.07
Wohnort: Seeheim-Jugenheim
Version: ---
     Beitrag Verfasst am: 04.11.2010, 09:05     Titel:
  Antworten mit Zitat      
Hi,

Du solltest prinzipiell i nicht als Variablennamen verwenden, denn i ist für die komplexe Zahl sqrt(-1) voreingestellt.

Ansonsten hast Du fast selbst die Lösung beschrieben:

Code:

function Sneu=shifty(Sold,N);
% Sold : vektor mit komplexen Werten (Inphase und Quadraturkomp.)
% N : Anzahl der Werte für Shift. [N kann auch negativ werden]
% Sneu: neuer Vektor mit verschobenen Komponenten

L=length(Sold); % Länge deines komplexen Eingabevektors
rep=real(Sold);
imp=imag(Sold);

if N>=0,
   repneu=rep(1:1:L-N);
   impneu=imp(N+1:1:L);
else
   N=-N;
   repneu=rep(N+1:1:L);
   impneu=imp(1:1:L-N);
end

Sneu=repneu + i .*impneu;

endfunction
 


Vielleicht kannst Du das gebrauchen ?

Grüße
Andreas
_________________

Andreas Geißler
Private Nachricht senden Benutzer-Profile anzeigen
 
anirac01
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 80
Anmeldedatum: 26.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.11.2010, 10:47     Titel:
  Antworten mit Zitat      
=)

Genau das hatte ich gesucht, für N>=0 hatte ich es dann gestern auch noch hinbekommen =) nun klappt das mit einem negativen N auch, danke.

i und q hab ich das nur in meinem Bildchen auf Papier genannt anfangs, aber in Matlab dann ander =)

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