|
|
Naheliegensten Wert aus Matrix finden und in neue schreiben |
|
VollesBrot |

Forum-Newbie
|
 |
Beiträge: 8
|
 |
|
 |
Anmeldedatum: 16.10.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014a
|
 |
|
|
 |
|
Verfasst am: 30.10.2015, 10:22
Titel: Naheliegensten Wert aus Matrix finden und in neue schreiben
|
 |
Hi Leute,
folgende Aufgabe würde ich gerne mit Matlab lösen. Gegeben sind folgende Matrizen:
- [A] 331 x 1 (Werte von 15 bis 48 mit Schrittweite 0,1)
- [B] 95 x 2 (In der ersten Spalte stehen Werte zwischen 15 und 48. Die Schrittweite ist hier allerdings völlig zufällig. Es kommt auch teilweise vor, dass die Werte nicht immer aufsteigend sind. In der zweiten Spalte steht ein von 0 bis 94. Stets aufsteigend mit Schrittweite 1)
Nun würde ich gerne die Werte aus [A] Zeilenweise abarbeiten und hierzu den naheliegensten Wert aus der ersten Spalte von [B] suchen.
Als Ergebnis soll eine neue Matrix [C] 331 x 2 geschrieben werden. In der ersten Spalte von [C] soll das Suchkriterium von [A] stehen und in der zweiten Spalte von [C] soll vom naheliegensten Wert aus [B] der dazugehörige Wert aus der zweiten Spalte geschrieben werden.
Hier ein Beispiel in verkürzter Form:
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 30.10.2015, 10:31
Titel:
|
 |
Hallo,
was hast du bisher versucht, und welche Probleme sind dabei aufgetreten?
Meine Herangehensweise wäre:
1. for-Schleife über die Elemente von A
2. Abstand des momentanen Elements von A zu den Elementen der ersten Spalte von B berechnen
3. Minimum von 2. (Aufruf von min mit zwei Rückgabeargumenten)
4. C wie gewünscht zusammenfügen
... oder (nochmal kurz nachgedacht) interp1 mit Option 'nearest'. Das wäre deutlich einfacher.
Grüße,
Harald
|
|
|
VollesBrot |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 8
|
 |
|
 |
Anmeldedatum: 16.10.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2014a
|
 |
|
|
 |
|
Verfasst am: 30.10.2015, 15:03
Titel:
|
 |
Viel habe ich noch nicht zu Stande gebracht.
Habe nur die kleinste Differenz bestimmt, aber ich weiß jetzt nicht wie ich die Stelle mit der kleinsten Differenz weitergebe in die neue Matrix.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 30.10.2015, 15:18
Titel:
|
 |
Hallo,
ich hatte dir ja geschrieben, dass du min mit zwei Rückgabeargumenten aufrufen solltest. Das zweite ist nämlich die Stelle, die du dann als Index für die andere Spalte von B verwenden kannst.
Vor allem aber: wenn du eine Version hast, die das unterstützt (leider ist der Eintrag "Version" in deinem Profil leer), dann verwende doch interp1 mit 'nearest' - dann sparst du dir den Aufwand.
Datenbeispiele bitte auch direkt posten, nicht als Bild. Sonst muss man ja die Daten erst abtippen, wenn man damit experimentieren will.
Grüße,
Harald
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|