|
|
Zugriff auf Zellen außerhalb einer Matrix unterbinden |
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.03.2015, 18:29
Titel: Zugriff auf Zellen außerhalb einer Matrix unterbinden
|
 |
Hallo zusammen,
ich wollte mal fragen, ob mir jemand eine Möglichkeit nennen kann, wie ich den Zugriff auf Zellen außerhalb einer Matrix unterbinden kann?
Beispiel (m=Anzahl Zeilen, n=Anzahl Spalten)
Wenn ich jetzt an dieser Matrix Formeln anwenden möchte, die zB (i+1,j) oder (i,j-1) enthalten, dann greife ich zwangsweise auf Zellen außerhalb der Matrix zu und Matlab gibt eine Fehlermeldung aus:
Ich habe es bislang nur mit einer eher mäßigen Lösung hinbekommen, indem ich die Matrix um zwei Spalten bzw. Zeilen erweitert habe:
Wenn ich die Rechnung dann auf den Bereich 2:m-1 und 2:n-1 beschränke, gibt es keine Fehlermeldung und es wird wie gewollt berechnet, zumindest nach jetzigem Stand.
Gibt es eine Möglichkeit, das Ganze irgendwie einzugrenzen, kann ich irgendwie den Zugriff auf Zellen außerhalb einer definierten Matrix unterbinden?
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 22.03.2015, 18:42
Titel:
|
 |
Hallo,
meines Erachtens ist das der einfachste Weg - oder den Algorithmus nur über den zulässigen Bereich laufen lassen.
Grüße,
Harald
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.03.2015, 21:02
Titel:
|
 |
Da ich Werte der Zellen (i+1,j), (i-1,j=, (i,j+1) und (i,j-1) brauche, komme ich notgedrungen in Bereiche außerhalb der Zelle.
Sicherlich wäre es machbar, für diese Bereiche entsprechende Bedingungen aufzustellen, jedoch wäre dies sicherlich weitaus umständlicher, als meine bisherige Methode.
Aber wenn es wohl keine sinnvolle Methode gibt, das Ganze ohne Erweiterung der Matrix zu realisieren, muss ich wohl damit leben.
Trotzdem danke
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 22.03.2015, 22:49
Titel:
|
 |
Hallo,
Zitat: |
Da ich Werte der Zellen (i+1,j), (i-1,j=, (i,j+1) und (i,j-1) brauche, komme ich notgedrungen in Bereiche außerhalb der Zelle.
|
Nicht, wenn du den Algorithmus von vorneherein nur auf den mittleren Bereich anwendest.
Zitat: |
Aber wenn es wohl keine sinnvolle Methode gibt, das Ganze ohne Erweiterung der Matrix zu realisieren, muss ich wohl damit leben. |
Ich finde, deine Methode ist durchaus sinnvoll. Je mehr Informationen du z.B. über den Algorithmus zur Verfügung stellst, desto eher kann man bei der Suche nach einer sinnvolleren Möglichkeit helfen.
Grüße,
Harald
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.03.2015, 01:18
Titel:
|
 |
|
 |
|
Harald hat Folgendes geschrieben: |
Nicht, wenn du den Algorithmus von vorneherein nur auf den mittleren Bereich anwendest. |
Das wäre ja dann meine Erweiterung
Harald hat Folgendes geschrieben: |
Je mehr Informationen du z.B. über den Algorithmus zur Verfügung stellst, desto eher kann man bei der Suche nach einer sinnvolleren Möglichkeit helfen. |
Eigentlich ist da nicht viel hinter, ich betrachte eine Zelle an der Stelle (i,j) und möchte dann eine Rechnung durchführen, welche auf die jeweils umliegenden Zellen zurückgreift. Das klappt auch soweit, bis eben eine Zelle am Rand der Matrix betrachtet wird, dann sind eine oder zwei Zellen, deren Wert herangezogen wird, außerhalb der Matrix.
Ansich könnte man sicher etwas zusammenbauen, was beispielsweise durch if-Schleifen die Werte von i und j abfragt, all das dürfte aber mehr Aufwand als Nutzen bringen, wenn man dies mit meiner bisherigen Methode vergleicht. Diese war auch mehr durch eine spontane Idee entstanden, da ich bislang nicht viel mit Matlab gearbeitet habe und so nicht wusste, was alles machbar ist und was nicht. Da dachte ich, man könnte das auch "eleganter" lösen.
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 25.03.2015, 00:35
Titel:
|
 |
|
|
|
|
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.
|
|