|
|
Wertebereiche von Matrix abschneiden |
|
M1CH |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.12.2007, 17:21
Titel: Wertebereiche von Matrix abschneiden
|
|
Hi!
Kennt hier vielleicht jemand eine Möglichkeit, schnell in Matlab bestimmte Werte "abzuschneiden".
z.B: Ich habe eine Matrix und möchte alle Werte die kleiner als 0 und grösser als 1 sin auf Null setzen. Die anderen Werte sollen gleich bleiben.
THX, M1CH
|
|
|
|
|
Ernesto Figueira |
Forum-Newbie
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 04.12.07
|
|
|
|
Wohnort: Hannover
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.12.2007, 17:51
Titel:
|
|
Sei a Ihre Matrix ist!
Dann
a.*(a>=0).*(a<=1)
ist die gewünschte Matrix.
Beispiel
a =
1 0.5 3
-1 0.24 0.9
1.1 -0.1 2
>> a.*(a>=0).*(a<=1)
ans =
1 0.5 0
0 0.24 0.9
0 0 0
|
|
|
jochma |
Forum-Fortgeschrittener
|
|
Beiträge: 79
|
|
|
|
Anmeldedatum: 25.10.07
|
|
|
|
Wohnort: Oberbayern
|
|
|
|
Version: Version 7.0.0 (R14)
|
|
|
|
|
|
Verfasst am: 05.12.2007, 17:54
Titel:
|
|
Servus,
würd für eine Matrix A z.B. so funktionieren:
Gruß,
jochma
|
|
|
Bijick |
Ehrenmitglied
|
|
Beiträge: 914
|
|
|
|
Anmeldedatum: 18.06.07
|
|
|
|
Wohnort: Nürnberg
|
|
|
|
Version: R2006b, R2008b
|
|
|
|
|
|
Verfasst am: 05.12.2007, 17:54
Titel:
|
|
Hallo M1CH,
das funktioniert mit "Logical Indexing":
Herzliche Grüße
Bijick
PS: Und jetzt die Lieblingslösung aussuchen!
_________________
>> why
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.04.2011, 10:40
Titel:
|
|
Hallo...
Gibt es auch die Möglichkeit diese Werte nicht auf 0 zu setzen sondern wirklich abzuschneiden? Sprich die Matrix zu verkleinern?
Gruess adi
|
|
|
EliteTUM |
Forum-Fortgeschrittener
|
|
Beiträge: 70
|
|
|
|
Anmeldedatum: 21.04.11
|
|
|
|
Wohnort: München
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.04.2011, 10:46
Titel:
|
|
Da wirds dann "interessanter"
Ist es eine Matrix oder ein Vektor?
Möglich wäre das durchlaufen aller Elemente in einer Schleife, überprüfen auf die gewünschte Bedingung (hier < 0 oder > 1) und wenn diese (hier) nicht erfüllt ist, das ganze in eine/n neue/n Matrix/Vektor schreiben.
Das Problem bei der Matrix könnte sein, dass in zwei Spalten/Zeilen unterschiedlich viele Elemente ausgeschnitten werden und eine Spalte dann mehr Elemente als eine andere hat bzw. eine Zeile. Die restlichen Elemente müssten hier auf jedenfall dann mit einem Wert (z.B. 0) gefüllt werden.
_________________
- EliteTUM
_____________________________________
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.04.2011, 11:00
Titel:
|
|
Es ist einfacherweise nur ein Vektor (1 x 1305). Wie kann man so eine abfragende Schlaufe generieren? Hab drum noch keine Erfahrung mit solchen Schlaufen bzw. ich krieg sie noch nicht recht hin...
Gruess
|
|
|
EliteTUM |
Forum-Fortgeschrittener
|
|
Beiträge: 70
|
|
|
|
Anmeldedatum: 21.04.11
|
|
|
|
Wohnort: München
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.04.2011, 11:14
Titel:
|
|
1. Schleifen, nicht Schlaufen
2. Wenn du mehr mit Matlab arbeitest unbedingt Schleifen anschauen (allgemein Programmierung). Sind sehr einfach, aber essentiell!
3. Probiers hiermit: (sehr ineffektiver Code, aber auf die schnelle fiel mir nix besseres ein - sollte aber klappen)
Edit: angepasst so dass es mit Zeilenvektor und Spaltenvektor klappen sollte.
_________________
- EliteTUM
_____________________________________
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.04.2011, 12:55
Titel:
|
|
Ich verstehe was du machst ausser das beim Zwischenvektor (end + 1) steht...
was passiert da genau?
|
|
|
EliteTUM |
Forum-Fortgeschrittener
|
|
Beiträge: 70
|
|
|
|
Anmeldedatum: 21.04.11
|
|
|
|
Wohnort: München
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.04.2011, 13:57
Titel:
|
|
Die Schreibweise
greift auf das letzte Element von Zwischenvektor zu. Wir wollen aber eins hinzufügen (hinten anhängen), also nehmen wir das Element end+1. OK?
_________________
- EliteTUM
_____________________________________
|
|
|
_Peter_ |
Moderator
|
|
Beiträge: 537
|
|
|
|
Anmeldedatum: 08.12.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.10, 2010a
|
|
|
|
|
|
Verfasst am: 26.04.2011, 21:12
Titel:
|
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 27.04.2011, 11:03
Titel:
|
|
Habe jetzt den Code umgeschrieben auf meine Situation:
I = H(H > 0 & H < 2)
Wobei H der Vektor ist mit den Zahlen und den vielen 0
und I ist mein Zielvektor indem nur noch die Zahlen sind. Jedoch ist nun der Vektor "leer", Obwohl in H Zahlen zwischen 0 und 1 vorkommen, wieso?
Gruess und Danke
|
|
|
Gast |
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 27.04.2011, 11:12
Titel:
|
|
Habs geschafft danke...
Es lag an der Obergrenze weil die Zahlen in 1000er gespeichert war...
Danke nochmals!!!
|
|
|
|
|
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 - 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.
|
|