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

Nächstmöglichen Wert finden

 

Richmand
Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 24.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.09.2011, 15:44     Titel: Nächstmöglichen Wert finden
  Antworten mit Zitat      
Hi, ich habe folgendes Problem und zwar möchte ich einen Vektor 1 mit Werten (fortlaufende Zeitpunkte - im µs Bereich) und einen Vektor 2 mit Werten (ebenfalls Zeitpunkte - allerdings im ms Bereich) und ich möchte gerne den Index des ersten Wertes aus Vektor 2 der größer ist als ein beliebiger Wert aus Vektor 1.

Bsp.:
vec01=[... 23678 24619 25974 26157 27544 27998 ...] [in µs]
vec02=[... 15 18 21 24 27 30 ...] [in ms]

vex02(Idx) > 25974
In diesem Fall also den Index von 27.

Geht das in wenigen Befehlen (im Idealfall mit einer Zeile), oder muss ich dafür was schleifenmäßiges Konstruieren?

Gruß,
Richmand
Private Nachricht senden Benutzer-Profile anzeigen


eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 15.09.2011, 16:02     Titel:
  Antworten mit Zitat      
Code:
targetIdx = 5;
value = vec02(find(vec02.*1000 > vec01(targetIdx), 1, 'first') * 1000); % in µs


Zuletzt bearbeitet von eupho am 15.09.2011, 16:10, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Micha85

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.09.2011, 16:08     Titel:
  Antworten mit Zitat      
Hi,

Code:

Index = find(vec02.*1000 > vec01(Index_gewuenschter_Wert), 1, 'first');
 


Grüße
Micha
 
Richmand
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 24.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.09.2011, 11:39     Titel:
  Antworten mit Zitat      
Hi,

viele Dank, das funktioniert schon mal sehr gut! Und wie könnte ich es machen, wenn der Index des gewünschten Wertes (targetIdx) nicht einfach nur ein Wert, sondern ein Vektor wäre, mit dem ich nach mehreren Werten größer verschiedener 'targetIdx' suchen wollte?
Offensichtlich bekommt Matlab da Dimensionsprobleme:
??? Error using ==> gt
Matrix dimensions must agree

Es scheint mir unmöglich das mit find zu machen, oder?

Gruß,
Richmand
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 16.09.2011, 12:11     Titel:
  Antworten mit Zitat      
Wenn ich dich richtig verstanden habe, sind in targetIdx mehrere Werte...dann kannst du das in einer Schleife lösen.

Code:

targetIdx = [5 8 11 33];
value=zeros(length(targetIdx),1); % pre-allocate
for i=1:length(targetIdx)
 value(i) = vec02(find(vec02.*1000 > vec01(targetIdx(i)), 1, 'first') * 1000); % in µs
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Richmand
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 24.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.09.2011, 13:06     Titel:
  Antworten mit Zitat      
Ja, genau so habe ich es jetzt auch gemacht, hatte anfangs gehofft, ich könnte die Schleife umgehen, scheint aber nicht zu funktionieren.
Vielen dank für die Antwort.

Gruß,
Richmand
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.