|
|
|
Einzelne Elemente einer Matrix verändern |
|
| champagnemomi |

Forum-Anfänger
|
 |
Beiträge: 10
|
 |
|
 |
Anmeldedatum: 18.07.17
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2015b
|
 |
|
|
 |
|
Verfasst am: 18.07.2017, 08:42
Titel: Einzelne Elemente einer Matrix verändern
|
 |
Hallo goMATLAB-Forum,
ich habe folgendes Probleme:
Innerhalb einer Funktion werden Eingabeparameter definiert. Nun möchte ich, dass unabhängig davon welche Daten diese Eingabeparameter haben, diese innerhalb der Funktion um einen bestimmten Prozentsatz ihrer Größe bzw. wenn das jeweilige Elemente nicht bekannt ist um einen bestimmten Wert erhöht wird.
Ich habe dies mit einer for-Schleife versucht, allerdings tut diese nicht das mit den Eingabeparametern, was sie soll bzw. beeinflusst diese gar nicht.
Die Eingabeparameter werden über das Comman-Window eingegeben, wo auch die Größe der Matrix (es handelt sich dabei um einen Spaltenvektor) initialisiert wird.
Der Code-Ausschnitt sieht folgendermaßen aus:
Ich hoffe ich habe mich verstänflich ausgedrückt.
Der Umgang mit MATLAB ist für mich noch ziemliches Neuland und ich bin für jede Anmerkung von Euch dankabr.
Danke sehr
|
|
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 18.07.2017, 17:49
Titel: Re: Einzelne Elemente einer Matrix verändern
|
 |
| |
 |
|
Hallo champagnemomi,
| Zitat: |
| Nun möchte ich, dass unabhängig davon welche Daten diese Eingabeparameter haben, diese innerhalb der Funktion um einen bestimmten Prozentsatz ihrer Größe bzw. wenn das jeweilige Elemente nicht bekannt ist um einen bestimmten Wert erhöht wird. |
Das ist noch nicht klar.
| Zitat: |
| Ich habe dies mit einer for-Schleife versucht, allerdings tut diese nicht das mit den Eingabeparametern, was sie soll bzw. beeinflusst diese gar nicht. |
Was soll sie denn genau tun?
Das sieht so aus, als wäre "Eingabeparameter" komplex. Danach verwendet Du aber nicht "Eingangsgroess", sondern weiterhin "Eingabeparameter". Ist das gewollt?
Das ist sinnfrei und Zeitverschwendung.
"0,5"??? Meinst Du "0.5"? Das Komma macht aus dem Code etwas komplett anderes, Dezimal-Trenner ist der Punkt.
Wie wäre dies ohne Schleife:
Etwas kurzes wie "X" ist dann sinnvoll, wenn es leichter lesbar ist. Für die meisten Berechnungen ist es nicht wichtig, ob die Zahl nun die "Eingangsgröße" oder der "Eingabeparameter" ist. Wenn man hier also Tippfehler vermeiden kann und das Programm übersichtlicher macht, ist ein Name mit 1 bis 8 Buchstaben hilfreich. Allerdings ist "X" nicht so wirklich smart. ;-)
Gruß, Jan
|
|
|
|
| champagnemomi |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 10
|
 |
|
 |
Anmeldedatum: 18.07.17
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2015b
|
 |
|
|
 |
|
Verfasst am: 19.07.2017, 09:31
Titel:
|
 |
| |
 |
|
Hallo Jan,
vielen Dank erstmal für deine Antwort.
| Zitat: |
Zitat:
Nun möchte ich, dass unabhängig davon welche Daten diese Eingabeparameter haben, diese innerhalb der Funktion um einen bestimmten Prozentsatz ihrer Größe bzw. wenn das jeweilige Elemente nicht bekannt ist um einen bestimmten Wert erhöht wird.
Das ist noch nicht klar. |
Ich versuche es mal verständlicher zu formulieren:
Die Eingabeparameter haben eine bestimmte Größe. Bei den Eingabeparamtern handelt es sich um einen Spaltenvektor. Ich möchte halt, dass einzelne Elemente (erstmal nur eins) nacheinander um einen bestimmten Wert vergrößert werden, d.h. innerhalb der Funktion soll nicht mit dem eigentlichen Eingabeparameter gerechnet werden, sondern mit dem veränderten.
Bsp.: Eingabeparameter=[0; 2; 3; 4], veränderter Eingabeparameter=[0.3; 2; 3; 4]
| Zitat: |
Zitat:
Ich habe dies mit einer for-Schleife versucht, allerdings tut diese nicht das mit den Eingabeparametern, was sie soll bzw. beeinflusst diese gar nicht.
Was soll sie denn genau tun? |
Ich wollte, dass die for-Schleife jedes Element des Spaltenvektors einmal vergrößert (die übrigen Eingabeparameter sollen aber ihren ursprünglichen Wert haben) und mit diesem veränderten Spaltenvektor einmal die Funktion ausführt.
Für das obige Beispiel würde die Funktion dann viermal ausgeführt werden.
| Zitat: |
Code:
Eingangsgroesse=real(Eingabeparameter)
Funktion ohne Link?
Das sieht so aus, als wäre "Eingabeparameter" komplex. Danach verwendet Du aber nicht "Eingangsgroess", sondern weiterhin "Eingabeparameter". Ist das gewollt? |
Es geht halt darum, dass der nur der Realteil verändert werden soll. Der Imaginärteil soll immer der eigentlichen Eingabe entsprechen.
| Zitat: |
Code:
Eingabeparameter(k)=Eingabeparameter(k)
Funktion ohne Link?
Das ist sinnfrei und Zeitverschwendung.
|
Ok.
| Zitat: |
Code:
Eingabeparameter(k)=Eingabeparameter(k)+0,5*Eingabeparameter(k)
Funktion ohne Link?
"0,5"??? Meinst Du "0.5"? Das Komma macht aus dem Code etwas komplett anderes, Dezimal-Trenner ist der Punkt. |
Danke für die Anmerkung. Das passiert mir öfter
Ich glaube ohne Schleife wird das ganze nicht funtionieren. Da die die einzelnen Elemente nacheinander verändert werden sollen.
Ich hoffe diesmal ist meine Beschreibung etwas verständlicher.
Vielen Dank und liebe Grüße
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 19.07.2017, 16:57
Titel:
|
 |
Hallo champagnemomi,
| Zitat: |
Code:
Eingangsgroesse=real(Eingabeparameter)
Funktion ohne Link?
Das sieht so aus, als wäre "Eingabeparameter" komplex. Danach verwendet Du aber nicht "Eingangsgroess", sondern weiterhin "Eingabeparameter". Ist das gewollt? |
| Zitat: |
| Es geht halt darum, dass der nur der Realteil verändert werden soll. |
Das macht Dein Code aber nicht. Du extrahierst zunächst nur den Real-Teil, verändern tust Du danach aber die Original-Daten. Was bedeutet dann genau "Eingabeparameter(k)>0"? Meinst Du "abs(Eingabeparameter(k))>0" oder "real(Eingabeparameter(k))>0"?
| Zitat: |
| Ich glaube ohne Schleife wird das ganze nicht funtionieren. Da die die einzelnen Elemente nacheinander verändert werden sollen. |
Man kann sie aber auch einfach alle gleichzeitig verändern, oder?
Jetzt probiere die Ideen mal in den Code einzufügen und poste ihn wieder, falls es weitere Probleme gibt.
Gruß, Jan
|
|
|
|
|
|
|
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.
|
|