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

Wert in Matrix suchen

 

daftpunker
Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 13.05.09
Wohnort: ---
Version: 5.3
     Beitrag Verfasst am: 13.05.2009, 09:13     Titel: Wert in Matrix suchen
  Antworten mit Zitat      
Hallo, ich habe eine frage zu folgendem Problem:
ich habe eine große anzahl an messdaten in form einer Matrize vorliegen und in genau einer spalte der matrize würd ich gern nach einem wert suchen der einem vorher definierten am nächsten kommt. sprich: es ist zum beispiel ein wert gesucht der dem wert "200" in genau dieser spalte am nähsten kommt.
kann mir da jemand helfen?
Private Nachricht senden Benutzer-Profile anzeigen


Maddy
Ehrenmitglied

Ehrenmitglied



Beiträge: 494
Anmeldedatum: 02.10.08
Wohnort: Greifswald
Version: ---
     Beitrag Verfasst am: 13.05.2009, 09:28     Titel:
  Antworten mit Zitat      
Du suchst dir die Spalte aus, ziehst deinen gewollten Wert ab und der Wert der am nächsten an Null liegt gewinnt. Wink

Code:

A % Matrix
Spalte=3;
Wert=200;
[I Zeile]=min(abs(A(:,Spalte)-Wert));
 

_________________

>> why
The computer did it.
Private Nachricht senden Benutzer-Profile anzeigen
 
daftpunker
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 13.05.09
Wohnort: ---
Version: 5.3
     Beitrag Verfasst am: 13.05.2009, 10:05     Titel:
  Antworten mit Zitat      
Super vielen Dank, hast mir sehr geholfen! Exclamation
Private Nachricht senden Benutzer-Profile anzeigen
 
Ferp
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 01.10.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.10.2011, 12:20     Titel:
  Antworten mit Zitat      
Ich habe ein ähnliches Problem und dieses Thema in der Suche gefunden.
Im Gegensatz zum Autor möchte ich die Zeile herausfinden, in der der Wert steht, der meinem am nächsten kommt.
Bisher habe ich
Code:


zeile_mit_wert_matrix=find (matrix == min(abs(matrix(:,1)- wert)),1)

 

Ausgegeben wird allerdings nur eine leere 0x1-Matrix. Wo liegt mein Fehler?

Liebe Grüße
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: 10.10.2011, 13:21     Titel:
  Antworten mit Zitat      
Hallo Ferp,

"min(abs(matrix(:,1) - wert))" ist um "wert" kleiner als der kleinste Absoult-Wert. Hast Du eine Grund dafür, dass ein solcher Wert exakt in der Matrix vorkommt? Oder könnten Rundugnsfehler den Wert so ändern, dass eine exakte Übereinstimmung nicht vorkommt?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Exurso

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2011, 16:44     Titel: so ähnlich
  Antworten mit Zitat      
Meine Problem geht in eine ähnliche Richtung.

allg. Darstellung:

eine Matrix mit vielen Zeilen und 3 Spalten, welche jeweils "Priorität", "Größe" und "Zuweisung" zu den(durch die Zeilen repräsentierten) Übertragungsstrecken enthalten.

Im ersten Schritt wird die Matrix nach der Prio sortiert. Nun ist logischerweise die erste Zeile nicht mehr die erste Strecke und bei einer Zuweisung eines Ausgangssignals würde die falsche Strecke angesteuert werden.
Um diese wieder zufinden, sollen die Zuweisungs Zahlen genutzt werden.

Wie kann ich also MatLab sagen, dass ich den Wert von "Größe" haben möchte, welcher sich in der Zeile mit "Zuweisung" == 1 befindet?

Beispiel:

vor sortierung

\begin{vmatrix} Prio & Groesse & Zuweis \\ 2.4 & 20 & 1 \\ 0.5 & 13 & 2 \\ 3.8 & 7 & 3 \end{vmatrix}

nach sortierung


\begin{vmatrix} Prio & Groesse & Zuweis \\ 0.5 & 13 & 2 \\ 2.4 & 20 & 1 \\ 3.8 & 7 & 3 \end{vmatrix}


Wäre Klasse, wenn ihr mir dabei weiterhelfen könntet.

Gruß

Lars
 
Maddy
Ehrenmitglied

Ehrenmitglied



Beiträge: 494
Anmeldedatum: 02.10.08
Wohnort: Greifswald
Version: ---
     Beitrag Verfasst am: 22.12.2011, 09:38     Titel:
  Antworten mit Zitat      
@Exurso

Ich hoffe, ich habe deine Frage richtig verstanden.

Code:
% M ist deine Matrix
ind=find(M(:,3)==1); % ind sind die Indizes der Zeilen in denen die 3. Spalte eine 1 enthält
Ergebnis=M(ind,2);
 

_________________

>> why
The computer did it.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.12.2011, 10:52     Titel:
  Antworten mit Zitat      
Hallo,

das FIND kann man da natürlich weglassen Wink

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Exurso

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.01.2012, 09:08     Titel:
  Antworten mit Zitat      
jo Funzt! Danke
 
Becki123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.11.2015, 10:34     Titel:
  Antworten mit Zitat      
Hallo zusammen,

habe ein ähnliches Problem. Allerdings möchte ich zwei Werte aus einer Tabelle als Wertepaar auslesen. Also bestimmt werden soll die Zeile aus meiner Matrix welche am ehesten meinen zwei Werten ähnelt.

[I, Zeile]=min(abs(Matrix(:,1)-Wert1(1,1)));

Wie kann ich in meiner Formel noch den zweiten Wert unter bringen?
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.11.2015, 17:54     Titel:
  Antworten mit Zitat      
Hallo,

wie soll denn aus den beiden Abweichungen die eine ermittelt werden? Eine Möglichkeit:

Code:
[I, Zeile]=min(max(abs(Matrix(:,1:2)-Wert1(1,1:2)), [], 2));


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

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 18.05.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.05.2018, 08:40     Titel: Werte in Matrix suchen
  Antworten mit Zitat      
Hallo ich hab folgendes Problem;

Ich habe eine Matrix mit 3 Spalten und vielen Daten. Die dritte Spalte ist in Zonen von 1-5 eingeteilt ( jedoch nicht in chronologischer Reihenfolge)
Wert 1 Wert 1,1 Zone 1
Wert 2 Wert 2,1 Zone 2
Wert 3 Wert 3,3 Zone 4
Wert 5 Wert 5,5 Zone 1
Wert 6 Wert 6,6 Zone 5
Wert 7 Wert 7,7 Zone 1
Wert 8 Wert 8,8 Zone 4
Wert 9 Wert 9,9 Zone 1
Ich möchte gerne alle Werte aus Zone 1 mit den dazugehörigen Werten aus der Zeile.
Kann mir jemand bitte helfen?
Danke
Private Nachricht senden Benutzer-Profile anzeigen
 
matlab232
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 07.09.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.09.2020, 10:03     Titel:
  Antworten mit Zitat      
Becki123 hat Folgendes geschrieben:
Hallo zusammen,

habe ein ähnliches Problem. Allerdings möchte ich zwei Werte aus einer Tabelle als Wertepaar auslesen. Also bestimmt werden soll die Zeile aus meiner Matrix welche am ehesten meinen zwei Werten ähnelt.

[I, Zeile]=min(abs(Matrix(:,1)-Wert1(1,1)));

Wie kann ich in meiner Formel noch den zweiten Wert unter bringen?


Hat jemamd dazu eine Antwort? Ich möchte ebenfalls die Zeile auslesen, die am nächsten an zwei Spaltenwerten dran ist.
Private Nachricht senden Benutzer-Profile anzeigen
 
AlexM

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.03.2021, 12:20     Titel: Antwort matbal232
  Antworten mit Zitat      
Zitat:
Hat jemamd dazu eine Antwort? Ich möchte ebenfalls die Zeile auslesen, die am nächsten an zwei Spaltenwerten dran ist.


Hallo,
Harald hatte schon eine mögliche Lösung formuliert. Danke dafür!

Hier nochmal um die Frage zu beantworten:
Wenn man aus einer Matrix die Zeile finden möchte, die zwei Werten am nächsten kommt kann man das folgendermaßen realisieren:

Code:
[error,index]=min(max(abs(Matrix(:,1:2)-Werte(1,1:2)),[],2));


Grüße
Alex
 
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 - 2024 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.