|
|
Nur negative Werte aus Matrix lesen |
|
samad |

Forum-Anfänger
|
 |
Beiträge: 28
|
 |
|
 |
Anmeldedatum: 01.03.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.07.2013, 11:31
Titel: Nur negative Werte aus Matrix lesen
|
 |
|
 |
|
Hi.
Ich habe ein Matrix "a" <895x4 double>. Ich möchte nur die negative Werte lesen. D.h. , dass ich als Antwort ein Matrix haben soll, der 4 Spalten mit negative Werte hat.
Das hier habe ich probiert:
k ist hier 4.
Ich bekomme aber eine Fehlermeldung:
"Subscripted assignment dimension mismatch."
ein Teil von dieses Matrix habe ich für euch hier kopiert:
0.0010 0.0008 0.0009 0.0006
0.0009 0.0006 0.0006 0.0004
0.0005 0.0005 0.0004 0.0001
0.0003 0.0002 0.0002 -0.0000
0.0001 -0.0001 -0.0000 -0.0002
-0.0003 -0.0003 -0.0003 -0.0004
-0.0003 -0.0004 -0.0004 -0.0006
-0.0004 -0.0007 -0.0006 -0.0006
-0.0006 -0.0008 -0.0007 -0.0008
-0.0008 -0.0009 -0.0009 -0.0010
-0.0009 -0.0011 -0.0010 -0.0011
-0.0010 -0.0013 -0.0011 -0.0013
-0.0012 -0.0015 -0.0013 -0.0014
-0.0014 -0.0016 -0.0014 -0.0016
-0.0015 -0.0017 -0.0015 -0.0017
-0.0017 -0.0019 -0.0017 -0.0018
-0.0018 -0.0021 -0.0018 -0.0020
-0.0020 -0.0023 -0.0019 -0.0022
-0.0022 -0.0024 -0.0022 -0.0023
-0.0024 -0.0027 -0.0024 -0.0025
-0.0026 -0.0029 -0.0025 -0.0028
-0.0028 -0.0031 -0.0027 -0.0030
-0.0030 -0.0035 -0.0029 -0.0032
-0.0033 -0.0038 -0.0032 -0.0035
-0.0036 -0.0041 -0.0034 -0.0038
kann jemmand mir helfen??
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 01.07.2013, 12:45
Titel:
|
 |
Hallo,
das sieht so aus, als ob es Teil einer for-Schleife wäre.
Wenn die Anzahl der negativen Elemente von Spalte zu Spalte unterschiedlich ist, kann man keine Matrix mehr daraus formen.
Mein Vorschlag wäre, stattdessen ein Cell Array zu nutzen:
Grüße,
Harald
|
|
|
Mmmartina |

Forum-Meister
|
 |
Beiträge: 745
|
 |
|
 |
Anmeldedatum: 30.10.12
|
 |
|
 |
Wohnort: hier
|
 |
|
 |
Version: R2020a
|
 |
|
|
 |
|
Verfasst am: 01.07.2013, 12:49
Titel: Re: Nur negative Werte aus Matrix lesen
|
 |
|
 |
|
samad hat Folgendes geschrieben: |
Hi.
Ich habe ein Matrix "a" <895x4 double>. Ich möchte nur die negative Werte lesen. D.h. , dass ich als Antwort ein Matrix haben soll, der 4 Spalten mit negative Werte hat. |
gibt es eine Festlegung, dass in einer Zeile nur entweder positive, oder entweder negative Werte vorkommen dürfen? Denn sonst müsstest du noch überprüfen, ob alle Elemente der Zeile neg. oder pos. sind.
Wenn es diese Festlegung gibt, kannst du einfach irgendeine Spalte nehmen (z.B. die Spalte 4, wie du für k gesetzt hast).
Und in dieser Spalte mittels find die Elemente suchen, die kleiner sind als Null.
Das Ergebnis ist dann ein Vektor der Zeilen, die die möchtest.
Der Fehlermeldung nach zu Urteilen gibt es diese Festlegungn aber nicht, sondern du gehst mittels einer for-Schleife über jede Spalte und sortierst jedes Element, kleiner Null in die jeweils neue Spalte?
Du versuchst dann unterschiedlich lange Spalten zu erzeugen, da die Anzahl der negativen Zahlen pro Spalte nicht gleich ist. Das geht nicht.
Hier hilft entweder die Belegung von Elementen größer Null mit z.B. NaN oder Wahl einer anderen Darstellung (z.B. 4 Spaltenvektoren).
_________________
LG
Martina
"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 01.07.2013, 13:35
Titel:
|
 |
Hallo,
ich merke gerade, dass ich die Frage falsch verstanden hatte. Allerdings ist mir noch nicht klar, ob nun
a) Zeilen, in denen die 4. Spalte negativ ist
b) Zeilen, in denen alle 4 Spalten negativ sind
gesucht werden.
zu a): siehe Martinas Vorschlag, wobei man das "find" weglassen kann.
zu b):
Grüße,
Harald
|
|
|
samad |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 28
|
 |
|
 |
Anmeldedatum: 01.03.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.07.2013, 14:14
Titel:
|
 |
Danke alle.
Ja Leute ihr habt richtig vermütet. Es ist ein Teil der for-Schleife.
Anzahl der negative Werte sind unklar!!!
Harald: Ich habe dein Vorschlag in ein Code umgesetzt, aber es funktioniert leider nicht. Du kannst es gern sehen:
ans
aNegative =
[] [] [2x1 double]
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 01.07.2013, 14:51
Titel:
|
 |
Hallo,
wie gesagt: ich hatte die Frage falsch verstanden, und damit passt auch die Antwort nicht.
Siehe meine Nachricht von 13:35. Die darin enthaltene Rückfrage ist leider noch nicht beantwortet.
Insbesondere für dieses Beispiel: welche Rückgabe erwartest du denn?
Grüße,
Harald
|
|
|
samad |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 28
|
 |
|
 |
Anmeldedatum: 01.03.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.07.2013, 08:46
Titel:
|
 |
Danke Harald.
Ich möchte eigentlich in jede Spalte Negative und Positive Werte seperieren, um später der kleinste Wert aus jede Spalte raus bekommen zu können.
Vielleicht ist es besser, dass ich mein Problem einfacher erkläre.
Mein Problem:
Ich habe 4 Spalten. Spaltenlänge sind gleich. Anzahl von neg und psitive Werte sind in jede Spalte unterschiedlich. Ich möchte von jede Spalte ein Wert (näherster Wert zu Null egal negativ oder positiv) raus schneiden und in ein 2te Matrix packen.
Deshalb habe ich gedacht, dass ich negativ und positive Werte aus einander nehme und a= min(negative) und b=min(positive) rechne und s=min(abs(a und b)) ist näherste Wert zu Null.
Bsp:
[a]=[1 2 -3 4 -5 -7];
[b]=[0.1 -0.2 0.3 -0.4 -0.6 -1];
[c]=[-10 -11 12 13 -14 15];
[d]=[-0.5 -1 1 1 -4 5];
k=[a' b' c' d'];
ans:
kminWerte=[1 0.1 -10 -0.5]
Hast du vielleicht ne bessere Idee
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 03.07.2013, 09:26
Titel:
|
 |
Hallo samad,
Du kannst den Index verwenden, den MIN zurück gibt:
Gruß, Jan
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 03.07.2013, 09:37
Titel:
|
 |
Hallo,
aufbauend auf Jans Vorschlag:
Grüße,
Harald
|
|
|
samad |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 28
|
 |
|
 |
Anmeldedatum: 01.03.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.07.2013, 09:47
Titel:
|
 |
Danke JUNGS.
Ich habe es so gelöst:
aber dann wuste ich nicht ob der min Wert pos oder negativ ist.
Mit eure Lösung weiß ich sogar jetzt welche Vorzeichen hat der min Wert
Danke Danke
|
|
|
|
|
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.
|
|