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

Differenz zweier Vektoren unterschiedlicher länge

 

Martin1984
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 29.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2008, 20:36     Titel: Differenz zweier Vektoren unterschiedlicher länge
  Antworten mit Zitat      
Hi,

also ich möchte die Differenz von2 Vektoren bzw,. Matrizen berechnen und plotten.
Die eine Matrix M hat die dimension (3001x2)
Die andre Matrix S hat die Dimension: (2597195x2)

habe versucht nur jeden 100.wert der matrix S zu nehmen, aber krieg sie nicht auf die gleiche Größe

die erste spalte der beiden matrizen ist die Zeit. Wie schrumpfe ich die matrix S auf dei länge der Matrix M?

und das gleichzeitig beide die gleichen Zeitkoordinaten, bzw. die gleichen werte in der ersten Spalte haben?


Vielen dank
Private Nachricht senden Benutzer-Profile anzeigen
Verschoben: 30.10.2008, 11:32 Uhr von Bijick
Von Matlab intern nach Programmierung


Maddy
Ehrenmitglied

Ehrenmitglied



Beiträge: 494
Anmeldedatum: 02.10.08
Wohnort: Greifswald
Version: ---
     Beitrag Verfasst am: 30.10.2008, 12:42     Titel:
  Antworten mit Zitat      
Sind die Zeitschritte in S äquidistant? Kommen alle Zeiten aus M auch in S vor? Kannst du mal beispielhaft M und S hier zeigen?
_________________

>> why
The computer did it.

Zuletzt bearbeitet von Maddy am 30.10.2008, 14:09, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 30.10.2008, 13:15     Titel:
  Antworten mit Zitat      
Also du könntest Linear Time Warping benutzen, Code dazu hab ich auch noch irgendwo rumliegen. Oder du benutzt einen Tiefpassfilter und dann downsampling. Wobei da ja das Problem ist, das es ein konstanter Faktor sein muss. Also wahrscheinlich doch LTW oder du nimmst den nächsten Faktor und schneidest dann hinten ab.

hier mein LTW Code:

Code:

%%%% Calculates Linear Time Warpe for Paramfound and Param
%%%% output = w
%%%% uses Param, Frames, i and j

I = length(y);
K = length(z);


w=zeros(1,I);

for k=1:I
    w(k) = fix( ((K-1) / (I-1)).*(k-1)+1.5 );
end;
 


Der Code gibt dir in w die Werte zurück, die doppelt verwendet werden zum Vergleich.
Zum Vergleich schreibst du dann zum Beispiel:
Code:


Viele Grüße,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
Martin1984
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 29.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.10.2008, 15:37     Titel:
  Antworten mit Zitat      
Hi

danke für die schnellen antworten.

Der vektor S bzw. die matrix wurde während einer Simulation erstellt(also struct , array with time) habe dort ein pulsegenerator mit 455Hz laufen.


Die matrix M hat als zeitvektor : 0s,1s,2s

das is ein vergleich von temperaturkurvven, deswegen genügt die geringe auflösung der matrix m von 1s
Private Nachricht senden Benutzer-Profile anzeigen
 
derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 30.10.2008, 15:55     Titel:
  Antworten mit Zitat      
Funktioniert der Code bei dir?
Private Nachricht senden Benutzer-Profile anzeigen
 
Martin1984
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 29.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.10.2008, 16:32     Titel:
  Antworten mit Zitat      
Hi Oli,

danke für deine Hilfe, aber irgwie check ich den Code nicht.
habs probiert krieg es aber nicht hin.


also hab aus meinem struct die werte in ein Array gepseihert.
das hat die diemsion 5312227x2

will es vergleichen mit einem array welches die dimension 2764X2 hat

also laut deinem code wird doch nix mit den werten gemacht oder?
Private Nachricht senden Benutzer-Profile anzeigen
 
derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 30.10.2008, 17:29     Titel:
  Antworten mit Zitat      
doch die gibst y=5000blax2
und z= 27blax2 ein

dann bekommst du w

und dann vergleichst du

z(w) mit y

Z.b: y=10x1
z=3x1 (array)

w ist dann gleich: 1 1 1 2 2 2 2 3 3 3

dann kannst du z(w) mit y vergleichen weil die dann die gleiche Länge haben. Die fehlenden Werte in z werden einfach mehrfach linear wiedergegeben.

Grüße,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
Martin1984
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 29.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.10.2008, 21:09     Titel:
  Antworten mit Zitat      
Hi,

also nach langem rumprobieren und vor allem danke deines codes kriege ich sie auf die gleiche länge.

aber wenn ich nun die differenz bilde kriege ich nicht das gewünschte ergebnis da er werte vergleicht die nicht die gleiche zeitbasis haben.

also vergleich von ämpfel mit birnen.

kann ich nachdem ich die beiden kurven geplottet habe irgwie nachträglich die differenz der beiden kurven bilden?

quasi grafisch
Private Nachricht senden Benutzer-Profile anzeigen
 
derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 03.11.2008, 12:37     Titel:
  Antworten mit Zitat      
Die gleiche Zeitbasis haben die beiden Variablen nach deiner Beschreibung schon, das Problem ist glaube ich ein anderes:

Du hast bestimmt eine ziemlich große Varianz in deinem längeren Signal und wenn du das dann mit einem Konstanten Wert vergleichst hast du natürlich eine sehr hohe Differenz. Dh wenn du die einfache Differenz nehmen möchtest gibt es zwei wege:
1.
Du reduzierst das längere Signal, so das es am nächsten an dem kürzeren Signal ist, indem du den mean() von zB. immer 100 Werten, danach benutzt du den LTW Alg.

2.
Du machst vorher den LTW und nimmst den mean von den Signalen, die wiederholt werden, also wenn am Anfang 112 mal eine 1 in w drinsteht, nimmst du den mean von den ersten 112 Werten deines langen Signals. usw.

Sag Bescheid obs klappt oder wenn du noch Hilfe brauchst,

Grüße,

der Oli
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.