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

Graph bzw. Matrix auf einheitliche Länge normieren

 

jens.ru
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 19.11.13
Wohnort: Baunach
Version: R2022a
     Beitrag Verfasst am: 23.01.2014, 12:32     Titel: Graph bzw. Matrix auf einheitliche Länge normieren
  Antworten mit Zitat      
Hey!

ich habe ein Signal (welches ich aus einer Acces Datenbank importiert habe) gleichgerichtet, gefiltert und bearbeitet, dass ich es in der Form vor mir liegen habe:
Graph

Nun habe ich diverse dieser Signale, dich ich übereinander legen möchte, daher muss ich die irgendwie normieren, auf 100% in 1%Schritten.
Aktuell haben meine Matzritzen je zwischen 1425 und 1577 Werte. Hat jemand eine Idee, wie ich diese normieren kann, ohne Werte zu verlieren? Embarassed

Danke, Jens!
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 23.01.2014, 12:40     Titel:
  Antworten mit Zitat      
du könntest auf das längste signal interpolieren. ob das allerdings klappt hängt von deinen daten ab. die angaben sind doch recht dürftig. um dir da weiterhelfen zu können. ein minimalbeispiel ist immer hiflreich.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
jens.ru
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 19.11.13
Wohnort: Baunach
Version: R2022a
     Beitrag Verfasst am: 23.01.2014, 12:47     Titel:
  Antworten mit Zitat      
Hey! Danke für deine zügige Antwort.
Was brauchst du für Angaben?
Ich habe in einer Matrix 5 verschiedene Aufnahmen des gleichen Vorgangs, jeweils ~14.000 Zeilen lang. Das eigentliche Event ist aber nur ~1500 Zeilen lange. Diese Events habe ich herausgesucht und bearbeitet in eine neue Matrix gespeichert. Allerdings sind diese Events jetzt natürlich nicht alle gleich lange sonder wie geschrieben unterschiedlich lange. Um sie allerdings richtig vergleichen zu können möchte ich sie normieren(interpolieren?) Habe auch schon über die Matlab Hilfe und Google interp1 und linspace gefunden, allerdings komme ich damit noch nicht so wirklich zurecht...

edit: jetzt habe ich noch einmal gelesen und irgendwie macht das mit der interp1 auf einmal doch Sinn..
Ich komm nur mit der Syntax noch nicht klar...

Wenn A mein Ausgangvektor ist, mit zB 1500 Einträgen und ich einen neuen haben möchte mit 1700, wie lautet denn dann der korrekte Befehl?
neuerVektor=interp1(A,1577); ?
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 23.01.2014, 13:12     Titel:
  Antworten mit Zitat      
Zitat:
allerdings komme ich damit noch nicht so wirklich zurecht...

beispiel code ist da immer hilfreich. was hast du versucht was hat nicht funktioniert? fehlermeldungen etc
wie weicht das erzihlte ergebniss vom gewünschtem ab ?
es währe schön wenn du einen kurzen datensatz geben könntest der dein problem wiederspiegelt. du sagst du hast 1500 messwerte ca. aber auf was bezogen. wie verhalten sich die einzelnen werte zueinander. gibt es eine zeitskala etc. wenn ein signal 5 min lang ist, 1500 werte hat und eines 1 min lang und 1400 werte sind das ja schon große unterschiede. ich kann jedem neuen user nur den thread richtig fragen aus meiner signatur zu herzen legen ^^ richtig fragen ist schwer aber notwendig ^^ es erspaart allen beteiligten viel arbeit Smile
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
jens.ru
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 19.11.13
Wohnort: Baunach
Version: R2022a
     Beitrag Verfasst am: 23.01.2014, 13:22     Titel:
  Antworten mit Zitat      
Habe den Threat vorhin schon durchgelesen, ja Smile

Ich möchte hier nur sehr ungerne Beispielcode posten, weil ich ein wenig paranoid bin und Angst habe, dass er dann (wenn er zum Schluss funktioniert) einfach rauskopiert wird. Das Programm ist Teil einer Klausur, von daher möchte ich so wenig wie nur irgendwie möglich posten.

Wie aber schon gesagt, die Werte sind in einer Matrix gespeichert. Spalte 1=erster Versuch, Spalte 2=zweiter Versuch usw. Also eigentlich nichts anderes als einzelne Vektoren.

Aber vom Prinzip müsste die Lösung mit interp1 eigentlich gar nicht schwer sein, wenn ich das jetzt richtig verstanden habe, da ich einfach nur Vektoren unterschiedlicher Länge habe, und diese durch die Interpolation vereinheitlichen möchte. Die Daten jedes Vektors gehen gegen eine "Zeitleiste" [1:1:15xx]

Ich hoffe es ist verständlich, was ich meine? Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 23.01.2014, 13:35     Titel:
  Antworten mit Zitat      
wenn das klausuraufgaben sind solltest du sie mit den aufzeichnungen des unterreichts eigentlich lösen können. wenn du keinen code postest kann ich dir auch nicht sagen was du falsch machst. ich bin mir auch nicht sicher ob interpolation wirklich das richtige ist. du musst im grundgenommen die zugrundeliegende skala vereinheitlichen. also quasi zu deinen messwerten die y werte sind einheitliche x werte generieren. dazu würde ich das längste signal nehmen und dann mittels linspace x achsen für die anderen messwerte erstellen. wichtig ist das dann alle halt bei 1 anfangen und bei zb 1525 aufhören oder so.
Code:
y1=1:10;
y2=ones(1,5);
n=numel(y1);
x2=linspace(1,n,numel(y2));
 

das wäre dann ub das minimalbeispiel zu dem was ich mir umständlich aus deinen ausführungen zusammen reime ^^
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
jens.ru
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 19.11.13
Wohnort: Baunach
Version: R2022a
     Beitrag Verfasst am: 25.01.2014, 17:50     Titel:
  Antworten mit Zitat      
Also danke dir nochmal für deine Hilfe, aber ich glaube die Lösung meines Problems war eine ganz einfache.

Mit dem Befehl

y= interpft(x,n) habe ich den Vektor x (bzw. die Spalte der Matrix) einfach auf die Länge n gestreckt. Hätte vielleicht nicht so stur auf interp1 losgehen sollen.

Aber ich denke, dass das jetzt schon die Lösung meines Problems war? Shocked
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 - 2025 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.