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

Auswertung von 2 Matrixen einer Testfahrt.

 

piddy
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 21.08.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.08.2012, 09:06     Titel: Auswertung von 2 Matrixen einer Testfahrt.
  Antworten mit Zitat      
Ich mache zurzeit ein Praktikum und muss auch mit Matlab programmieren. Habe bis jetzt einen 1 Semester lang einen Matlab Kurs in der Uni gemacht.

Zurzeit muss ich eine Testfahrt auswerten.

Ich habe zwei Matrizen mit je 2 Spalten. Die linke ist jeweils ein Zeitvektor.
Für die erste Matrix gibt die Rechte spalte die Schwenkposition eines Schweinwerfers an.

(e.g.)
(SollPos_R)
zeit (s) position (grad)
0.093 1.413
0.197 1.407
0.283 1.402
0.405 1.352
..............
1715.032 -3.432


In der Zweiten Matrix stellen nummern zwischen 1-8 bestimmte modi des Scheinwerfers da.

(e.g.)
(P_rechts)
zeit modus
0.083 2
0.191 4
0.301 4
0.397 4
.....
1715.013 3


Die beiden probleme sind, das ein Vektor 171506 Zeilen lang ist und der andere 171402 lang ist. Das Programm sollte eigentlich alle 10millisec. eine
Aufnahme machen. Dies geschieht leider nicht Zeitsynchron.

____
Meine erste Aufgabe war nicht besondes schwer. Da musste ich nur in einem Bardiagramm in Prozent zeigen wie lange der in realation zur fahrzeit zwischen 1 und 2 grad ist (e.g. 15% der fahrzeit), wie oft zwischen 2 und 3 grad (e.g. 7%fahrzeit)........
______________
Code:

y=SollPos_R; %select relevant vector
y(:,1)=[]; %Erase time vector
 
[x_w,n_w] =hist(y,-14.5:14.5); %healamp position
 
x_w = x_w./sum(x_w)*100;
 
n_w = n_w*-1;
 
figure(1)
bar(n_w,x_w)
 

____________________________
Das war kein problem und funktioniert ohne Probleme.

Nun soll ich das gleiche machen aber diesmal soll ich das nur machen, wenn der Schweinwerfer in Modus 4 ist. Das ist natürlich schwierig werden, wegen der nicht synchronen Zeit. Ausserdem ist die fahrt insgesamt 5stundne lang. Ich habe 10 matrizen von den beiden. Ich dachte daran einen loop zu benuzen, aber bei mehr als 1,6 Millionen Punkten könnte dies sehr lange dauern. Gibt es irgenteine Methode über min(differences) oder so die Angepassten Zeiträume anzugleichen, ohne das es drei Stunden rechnen in Anspruch nehmen wird?

Danke für eure Hilfe.
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 21.08.2012, 17:31     Titel: Re: Auswertung von 2 Matrixen einer Testfahrt.
  Antworten mit Zitat      
Hallo piddy,

Mit INTERP1 sollte man in wenigen Sekundenbruchteilen die Indices herausfinden können, die zu den Zeiten gehören, bei denn bestimmte Werte vorliegen. Selbst mit einer Schleife wäre dies in wenigen Sekunden zu machen, wenn man berücksichtigt, dass beide Zeit-Spalten chronologisch sortiert sind. Versuche es einfach mal und poste, was Du bisher gemacht hast. Konkrete Fragen lassen sich besser beantworten, ohne dass wir gleich deine Hausaufgaben lösen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
piddy
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 21.08.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.08.2012, 10:10     Titel:
  Antworten mit Zitat      
Danke für den Hinweis.

Das ist was ich bisher gemacht habe. Es funktioniert einwandfrei, aber es dauert halt sehr lange. Ich werde versuchen INTERP1 zu benutzen.

Code:

clear all %clear everything
clc;
close all
%load relevant packages
load xxx

y=Priority_rechts; %select relevant vector
y(:,2)=[]; %Erase mode
z=SOA_SollPos_R
z(:,2)=[]; %Erase position
time=0

    M=(0.00:0.01:Priority_rechts(end,1))'
i=1

while time<Priority_rechts(end,1)
 
%while time<0.1
    [difference1,matrix_position1]=min(abs(y-time));
   
    [difference2,matrix_position2]=min(abs(z-time));
   
    M(i,2)=SOA_SollPos_R(matrix_position2,2);
    M(i,3)=Priority_rechts(matrix_position1,2);
   
   time=time+0.01
   i=i+1;
end

m=M(M(:,3)==4,:)
m(:,3)=[]; %Erase vector
m(:,1)=[]; %Erase vector

[x_w,n_w] =hist(m,-14.5:14.5);

x_w = x_w./sum(x_w)*100;

n_w = n_w*-1;

[x_w,n_w]

figure(1)
bar(n_w,x_w)

ADF= length(m)/length(Priority_rechts) %Anteil_an_der_Fahrzeit
 
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.