|
markuman |

Forum-Guru
|
 |
Beiträge: 320
|
 |
|
 |
Anmeldedatum: 14.12.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
|
 |
|
|
 |
|
Verfasst am: 26.05.2014, 10:50
Titel: ismatrix(rand(2,2,2))
|
 |
Octave liefert in diesem Fall eine 1. Wie detektiere ich denn nun am besten in Matlab n-Dimensionale Matrizen?
Habt ihr eine bessere Idee?
_________________
DIY OR DIE
entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
|
|
|
|
|
Andreas Goser |

Forum-Meister
|
 |
Beiträge: 3.654
|
 |
|
 |
Anmeldedatum: 04.12.08
|
 |
|
 |
Wohnort: Ismaning
|
 |
|
 |
Version: 1.0
|
 |
|
|
 |
|
Verfasst am: 26.05.2014, 11:05
Titel:
|
 |
Interessanter Effekt! ISMATRIX macht exakt das was in der Doku steht:
Zitat: |
ismatrix(V) returns logical 1 (true) if size(V) returns [m n] with nonnegative integer values m and n, and logical 0 (false) otherwise.
|
Also ist es kein Bug. Aber richtig intuitiv ist es auch nicht.
Lösen würd ich es über SIZE.
Andreas
|
|
|
markuman |
Themenstarter

Forum-Guru
|
 |
Beiträge: 320
|
 |
|
 |
Anmeldedatum: 14.12.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
|
 |
|
|
 |
|
Verfasst am: 26.05.2014, 11:12
Titel:
|
 |
Komisch ist auch, dass iscell bei einer 3D Zelle hingegen funktioniert.
Kann denn irgendein anderes Objekt in Matlab auch noch numel(size(obj))>2 annehmen was keine Matrix ist? Spontan würde ich einfach noch ~iscell() ausschließen wollen.
_________________
DIY OR DIE
entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
|
|
|
markuman |
Themenstarter

Forum-Guru
|
 |
Beiträge: 320
|
 |
|
 |
Anmeldedatum: 14.12.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
|
 |
|
|
 |
|
Verfasst am: 29.05.2014, 20:27
Titel:
|
 |
Also ich weiß ja nicht....
Ob das nun genau so dokumentiert ist oder nicht. In meinen Augen ist das ganz klar ein Bug!
ismatrix erkennt keine Matrizen die mehr als zwei Dimensionen haben, dafür erkennt es dann aber Zellen, die eindeutig Zellen sind?
Zumal 3-dimensionale Matrizen überhaupt von nichts erkannt werden.
Ja, isnumeric erkennt ein rand(3,3,3). Aber das ist keine Aussage darüber, was es jetzt ist.
Und wenn man mit isnumeric argumentiert ...
_________________
DIY OR DIE
entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 29.05.2014, 22:09
Titel:
|
 |
|
 |
|
Hallo,
Zitat: |
Kann denn irgendein anderes Objekt in Matlab auch noch numel(size(obj))>2 annehmen was keine Matrix ist? |
Ja, beispielsweise Struktur-Arrays:
Ich würde sogar sagen: jeder Datentyp, in dem das nicht explizit unterbunden wird - z.B. Function Handles.
Zitat: |
Ob das nun genau so dokumentiert ist oder nicht. In meinen Augen ist das ganz klar ein Bug! |
Ein Bug wäre ein Verhalten, das vom beabsichtigten/spezifizierten abweicht. Das ist hier aber nicht der Fall. Man könnte höchstens darüber diskutieren, ob is2D nicht ein passenderer Name für die Funktion gewesen wäre.
Zitat: |
erkennt keine Matrizen die mehr als zwei Dimensionen haben |
Weil eine Matrix nun mal zwei Dimensionen hat. Bei mehr als zwei Dimensionen spricht man von einem Array. Dass "Matrix" häufig (und zugegebenermaßen früher auch von mir) im Zusammenhang mit Arrays mit mehr als zwei Dimensionen verwendet wird, macht es nicht richtiger.
Zitat: |
Wie detektiere ich denn nun am besten in Matlab n-Dimensionale Matrizen? |
Das mit den n-dimensionalen Matrizen hatten wir ja grade. Was ist also gemeint? Ein n-dimensionales numerisches Array? In dem Fall wäre mein Vorschlag:
Eine schöne Alternative zu länglichen Abfragen ist übrigens validateattributes.
Grüße,
Harald
|
|
|
markuman |
Themenstarter

Forum-Guru
|
 |
Beiträge: 320
|
 |
|
 |
Anmeldedatum: 14.12.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
|
 |
|
|
 |
|
Verfasst am: 29.05.2014, 22:24
Titel:
|
 |
hm alles nicht so einfach.
Je mehr man sich mit damit beschäftigt, je weniger werde ich ismatrix() benutzen. Man/Ich erwarte/t halt irgendwie was komplett anderes
Aber validateattributes kannte ich noch nicht. Das werde ich mir die Tage mal genauer ansehen
_________________
DIY OR DIE
entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 29.05.2014, 22:42
Titel:
|
 |
Hallo,
Zitat: |
Man/Ich erwarte/t halt irgendwie was komplett anderes |
Um dir da weiterhelfen zu können, müsste man genau wissen, was du erwartest. Insbesondere wäre interessant, inwiefern du mit einer Kombination von isnumeric und ndims nicht weiterkommst.
Auch das entspricht der Spezifikation, da
Grüße,
Harald
|
|
|
markuman |
Themenstarter

Forum-Guru
|
 |
Beiträge: 320
|
 |
|
 |
Anmeldedatum: 14.12.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
|
 |
|
|
 |
|
Verfasst am: 29.05.2014, 23:34
Titel:
|
 |
|
 |
|
Harald hat Folgendes geschrieben: |
Hallo,
Zitat: |
Man/Ich erwarte/t halt irgendwie was komplett anderes |
Um dir da weiterhelfen zu können, müsste man genau wissen, was du erwartest. Insbesondere wäre interessant, inwiefern du mit einer Kombination von isnumeric und ndims nicht weiterkommst.
Auch das entspricht der Spezifikation, da
|
Und warum ist dann "kein Element" dennoch eine Matrize und numerisch?
Harald hat Folgendes geschrieben: |
Weil eine Matrix nun mal zwei Dimensionen hat. Bei mehr als zwei Dimensionen spricht man von einem Array. Dass "Matrix" häufig (und zugegebenermaßen früher auch von mir) im Zusammenhang mit Arrays mit mehr als zwei Dimensionen verwendet wird, macht es nicht richtiger.
|
Bezgl ismatrix versteh ich jetzt die Abgrenzung zwischen Array und Matrix nicht ganz bezüglich der Dimension. Soweit ich mich erinnern kann, sprach man hier und da (in der Schule und auch im Studium) mal von 3-dimensionalen Vektoren oder einer 3-dimensionalen Matrize.
_________________
DIY OR DIE
entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 30.05.2014, 09:22
Titel:
|
 |
Hallo,
Zitat: |
Und warum ist dann "kein Element" dennoch eine Matrize und numerisch? |
Numerisch als Gegensatz zu beispielsweise einem leeren String ''
Ob es eine Matrix ist oder nicht ist sicher ein Grenzfall - eben eine Matrix mit 0 Zeilen / Spalten.
Zitat: |
Soweit ich mich erinnern kann, sprach man hier und da (in der Schule und auch im Studium) mal von 3-dimensionalen Vektoren oder einer 3-dimensionalen Matrize. |
Ein 3-dim. Vektor könnte ein Vektor mit 3 Elementen, also im 3D-Raum sein. Und wie gesagt: von 3-dim. Matrizen wird zwar gerne geredet, es gibt sie aber nicht.
Und wie gesagt: wenn du genau beschreibst, auf was du testen möchtest, dann findet sich sicher eine Lösung.
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.
|
|