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

Probleme beim Interpoieren

 

phlpp.hrtmnn
Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 29.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2014, 17:10     Titel: Probleme beim Interpoieren
  Antworten mit Zitat      
Hallo,

ich möchte die Werte aus zwei Matritzen miteinander interpolieren.

Vereinfacht dargestellt:
In der ersten Matrix stehen ca. 100 Messwerte für den Winkel.
In der zweiten Matrix stehen ca. 1000 Messwerte für die Spannung.
Nun möchte ich die beiden Matrizen über 50 Werte interpolieren.
Code:

MatrixA = xlsread('Winkel.xlsx');
MatrixB = xlsread('Messwerte.xlsx');
Z = 1:1:50;

MatrixC = interp1(MatrixA, MatrixB, Z);
 


Wenn ich den Code so ausführe, dann gibt mir Matlab den Fehler, dass Matrix A und Matrix B die gleiche Länge sein müssen.

Mit welchem Befehl kann ich über unterschiedlich große Matritzen interpolieren?
Danke für die Hilfe Wink
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: 29.01.2014, 17:24     Titel:
  Antworten mit Zitat      
mir ist das ziel nicht ganz klar. zur interpolation brauchst du 2 datensätze die sich aufeinander bezihen. darum auch das verlangen nach gleicher länge. und einen 3. auf den du interpolieren willst. was ist also dein ziel?
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
phlpp.hrtmnn
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 29.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2014, 17:31     Titel:
  Antworten mit Zitat      
Die Winkel-Messwerte aus MatrixA beziehen sich auf die Spannungs-Messwerte aus MatrixB.

Durch unterschiedliche Abtastraten der Sensoren habe ich jedoch deutlich mehr Spannungs-Messwerte als Winkel-Messwerte.

Als erstes würde ich gerne einen 2d-Plot erzeugen, in dem die Spannungs-Messwerte über den Winkel-Messwerten dargestellt sind. (Durch die unterschiedliche Länge der Vektoren geht das ja nicht ohne weiteres)
Private Nachricht senden Benutzer-Profile anzeigen
 
phlpp.hrtmnn
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 29.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2014, 17:33     Titel:
  Antworten mit Zitat      
Außerdem würde ich gerne die Anzahl der Winkel-Messwerte reduzieren.
Deshalb das "Z = 1:1:50;"
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: 29.01.2014, 17:47     Titel:
  Antworten mit Zitat      
welche messwerte gehören denn zusammen? du könntest jeden 2. messwert der ersten reihe mit jedem 20. der 2. plotten.
so in der art:
Code:
plot(a(1:2:end),b(1:20:end)

alternativ giebt es auch den befehl
Code:
downsample

der macht aber das gleiche.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
phlpp.hrtmnn
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 29.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2014, 17:57     Titel:
  Antworten mit Zitat      
In diese Richtung habe ich auch schon etwas versucht.
Ich habe mit einer Schleife jeden x-ten Spannungs-Messwert in eine neue Matrix mit den Winkel-Messwerten geschrieben. Das klappt soweit auch.

Ich würde es nur lieber so lösen, dass nicht so viele Messwerte übergangen werden.
Es gibt also in Matlab keine Möglichkeit zwei Vektoren unterschiedlicher Länge "miteinander zu verechnen"?
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: 29.01.2014, 18:02     Titel:
  Antworten mit Zitat      
Zitat:
Es gibt also in Matlab keine Möglichkeit zwei Vektoren unterschiedlicher Länge "miteinander zu verechnen"?

es giebt viele möglichkeiten. du hast aber noch nicht gesagt wie. matlab kann ja schlecht raten was du gerne haben willst ^^. wenn du dir selber nicht klar bist was du machen willst ist es schwer dir zu helfen Smile
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
phlpp.hrtmnn
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 29.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2014, 18:57     Titel:
  Antworten mit Zitat      
Doch, ich bin mir klar was ich machen möchte. Leider scheine ich meine Vorstellung nicht richtig erklären zu können. Und vielleicht ist es auch nicht möglich meine Vorstellung zu realisieren.

Also noch mal ganz ganz einfach Very Happy

Ich habe zwei Sensoren mit unterschiedlicher Abtastrate

Deshalb haben die Matritzen mit den Messwerten der Sensoren verschiedene Längen. (Beide Matritzen der Sensoren haben nur eine Spalte, jedoch unterschiedich viele Zeilen)

Auf Grund der unterschiedlichen Anzahl der Zeilen kann ich die Messwerte des Sensors2 nicht über die Messewerte des Sensors1 plotten.

Nun möchte ich die Anzahl der Zeilen der Messwerte-Matrix des Sensors2 an die Anzahl der Zeilen der Messwerte-Matrix des Sensors1 anpassen.


Ich möchte keine Messwerte des Sensors2 in weiteren Berechnungen unberücksichtigt lassen, deshalb möchte ich keine Messwerte überspringen (z.B. mit Funktion downsample).
Ich habe auch schon den Mittelwert über i Messwerte gebildet, sodass danach die Anzahl der Messwerte des Sensors1 zu der Anzahl der gebildeten Mittelwerte des Sensors2 passt. Aber auch diese Methode gefällt mir nicht.


Jetzt wird es schwierig zu erklären:
Nun suche ich nach einer Funktion in Matlab, welche selbstständig aus den Messwerten des Sensors2 die zu den Messwerten von Sensor1 passende Anzahl an "neuen" Messwerten bildet.
Die "neuen" Messwerte sollen natürlich aus den ursprünglichen Messwerten des Sensors2 berechnet werden.

Hierzu ein Bild. Ich hoffe es wird verständlich.

CAM00003.jpg
 Beschreibung:

Download
 Dateiname:  CAM00003.jpg
 Dateigröße:  1.45 MB
 Heruntergeladen:  336 mal
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: 29.01.2014, 19:07     Titel:
  Antworten mit Zitat      
Zitat:
Aber auch diese Methode gefällt mir nicht.

warum nicht?
du willst 100 messwerte und 1000 messwerte auf die gleiche anzahl bringen und dann wieder nur 50 nehmen..... das macht keinen sinn wenn du die werte nicht miteinander verrechnest da du dann wieder bei meiner lösung landest.
was soll also mit den 1000 werten passieren aus denen du 50 machen willst ohne mittelwert bildung?
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
Nun suche ich nach einer Funktion in Matlab, welche selbstständig aus den Messwerten des Sensors2 die zu den Messwerten von Sensor1 passende Anzahl an "neuen" Messwerten bildet.
Die "neuen" Messwerte sollen natürlich aus den ursprünglichen Messwerten des Sensors2 berechnet werden.

Und wie soll diese Funktion das machen?

Grundsätzlich gibt es die Möglichkeiten von Interpolation oder Mittelung, aber die kennst du ja schon?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
frankw
Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 22.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.01.2014, 10:22     Titel:
  Antworten mit Zitat      
Vielleicht geht es so:

Code:
ZeitA = ....
DatenA = ...

ZeitB = ...
DatenB = ...

NeueZeit = ....

NeueDatenA = interp1(ZeitA, DatenA, NeueZeit);
NeueDatenB = interp1(ZeitB, DatenB, NeueZeit);


ob das Sinn macht bei den Daten kann ich nicht beurteilen. Und Falls die Zeit nicht exisitert kann diese auch mittels der Abtastrate generiert werden.

Gruß Frank
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.