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ähesten Wert finden und dazugehörigen ausgeben

 

Gast_Speedy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.11.2013, 14:54     Titel: Nähesten Wert finden und dazugehörigen ausgeben
  Antworten mit Zitat      
Hallo,

ich bräuchte mal Eure Hilfe. Bin relativer Anfänger in Matlab und habe folgendes Problem:

Ich habe eine Matrix: 562x4
In Spalte 1: Meine gemessenen Lenkwinkel Versuchswerte
In Spalte 2: Vergleichswert Lenkwinkel
In Spalte 3: Vergleichswert Radwinkel (zugehörig zu Spalte 2)
In Spalte 4: Radwinkel zu meinen gemessenen Lenkwinkeln

Die gezeigte Tabelle möchte ich als Beispiel nehmen.
Es wird in Spalte 4 der passende Radwinkel zu dem in Spalte 1 gegebenen Lenkwinkel gesucht. Dieser soll mit Hilfe von Spalte 2 und 3 gesucht werden.

Im der ersten Zeile der ersten Spalte hat man den Wert -360,32. Nun soll der am nähesten gelegene Wert in Spalte 2 dazu rausgesucht (-360) und der passende Wert aus Spalte 3 (-19,5) in der vierten Spalte - erste Zeile - ausgegeben werden.

Danach soll die nächste Zeile der ersten Spalte in Umlauf kommen....und das ganze bis zum Ende der Tabelle.

Kann mir jemand von Euch weiter helfen?

Mit
Code:
[m, ind] = min(abs(A(:,1) - 100))
ergebnis = A(ind, 2)

bin ich leider nicht weiter gekommen.

Beste Grüße
Speedy

Tabelle.jpg
 Beschreibung:
Beispiel

Download
 Dateiname:  Tabelle.jpg
 Dateigröße:  39.21 KB
 Heruntergeladen:  517 mal


Gast_speedy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.11.2013, 09:26     Titel:
  Antworten mit Zitat      
Guten Morgen,

hat keiner von Euch auch nur ein Ansatz für mein Problem?
Würde mich wirklich freuen, Hilfe zu bekommen.

Bin hier schon am verzweifeln.

Danke und Beste Grüße
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 27.11.2013, 10:14     Titel:
  Antworten mit Zitat      
du musst das ganze entweder mit einer for schleife verküpfen oder .. hmm vieleicht was mit meshgrid und so weiter aber ich würde dir die for schleife empfehlen.
dein geposteter code passt nicht zu deinem beispiel. darum kann ich mit der aussage
Zitat:
bin ich leider nicht weiter gekommen.
nicht viel anfangen.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
Gesplittet: 27.11.2013, 10:37 Uhr von Martin
Von Beitrag Zahl in Matrix finden, die einem Wert am nächsten ist aus dem Forum Programmierung
 
Gast_speedy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.11.2013, 14:27     Titel:
  Antworten mit Zitat      
Dieser Beispiel Code war aus einem anderen Thread, bevor diese Frage in einen alleinigen Thread verschoben wurde Very Happy

http://www.gomatlab.de/zahl-in-matr.....naechsten-ist-t21550.html

In meinem Fall wäre es glaub ich dieser Code gewesen?! :

Code:

[m, ind] = min(abs(A(:,2) - -360.32))
ergebnis = A(ind, 2)
 


Hättest Du einen Ansatz für mich, was die For-Schleife angeht?
Sorry, aber ich habe überhaupt keine Idee, dieses zu verwirklichen.
Wurde ein wenig ins kalte Wasser geworfen Laughing
 
reichkrystofski
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 26.11.13
Wohnort: Biederitz
Version: 2006b 32bit, 2009b 64bit
     Beitrag Verfasst am: 27.11.2013, 14:49     Titel:
  Antworten mit Zitat      
Nehmen wir an, M ist deine Tabelle mit 4 Spalten, bei der die ersten 3 gegeben sind (A,B,C) und die letzte gefüllt werden soll. Dann würde ich es so realisieren:

Code:

for k=1:size(M,1),
    [m, ind] = min(abs(M(:,2) - M(k,1)));
    M(k,4) = M(ind,3);
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Duall777
Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 28.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.11.2013, 14:50     Titel:
  Antworten mit Zitat      
Hi,

also du musst wissen bei welcher abweichung du die wert als "gleich" bewertest also ist 260 und 259,3 gleich für dich.
ansonsten sollte es wie winkow schon sagt mit for schleife funktionieren in etwa so
Code:

for i=1:length(Matrix(:,1))
   for n=1:length(Matrix(:,2))
      if abs(Matrix(i,1)-Matrix(n,2))<1
      Matrix(i,4)=Matrix(n,3);
      end;
   end;
end;
 

hier habe ich beispielhaft mit einer abweichung von 1 gearbeitet
wenn du sie kleiner/größer haben willst brauchst du nur die if-abfrage ändern

Grüße

Duall777
Private Nachricht senden Benutzer-Profile anzeigen
 
reichkrystofski
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 26.11.13
Wohnort: Biederitz
Version: 2006b 32bit, 2009b 64bit
     Beitrag Verfasst am: 27.11.2013, 14:57     Titel:
  Antworten mit Zitat      
Die Lösung von Dual777 findet alle Abweichungen <1 und die zuletzt gefundene bleibt in Spalte 4 stehen. Ich glaube, das ist nicht was gefragt war.
Private Nachricht senden Benutzer-Profile anzeigen
 
Duall777
Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 28.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.11.2013, 15:03     Titel:
  Antworten mit Zitat      
@reichkrystofski dein code ist ja natürlich viel eleganter
stimmt ja letzte bleibt stehen hab ich nicht bedacht
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast_Speedy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.11.2013, 11:32     Titel:
  Antworten mit Zitat      
Ich danke Euch....das funktioniert! Super....!!!

Very Happy Very Happy Very Happy

Danke Danke Danke!

Habe den code von reichkrystofski genutzt.

Ein schönes Wochenende wünsch ich Euch!
 
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.