WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Matrix mit bestimmten diagonalen füllen

 

Swiffer258
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 12.02.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.02.2020, 19:37     Titel: Matrix mit bestimmten diagonalen füllen
  Antworten mit Zitat      
Hey Leute,
ich bin aufgrund des Studiums bei Matlab unterwegs, und komme bei folgender Aufgabe nicht weiter:
Loop through the matrix and assign
‘2‘ on the main diagonal,
‘-1‘ on the adjacent diagonals,
‘1‘ on the elements in the last row when they are zero and assign
‘3‘ everywhere else.

das soll durch for schleifen entstehen und mit einer beliebigen nxm Matrix möglich sein..

vielen dank im voraus!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.02.2020, 20:43     Titel:
  Antworten mit Zitat      
Hallo,

wie hast du denn angefangen?
Du benötigst zwei geschachtelte for-Schleifen und ein if-elseif Konstrukt darin.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Swiffer258
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 12.02.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.02.2020, 20:51     Titel:
  Antworten mit Zitat      
Danke für die Antwort.

ich weiß halt nicht wie die for-Schleifen aussehen sollen. Ich dachte mir das ich quasi vektoren über die diag funktion auf eine null matrix addiere, aber wie genau dann die for-Schleife aussehen soll, erschließt sich für mich nicht. Ich hab mich auch noch nicht wirklich mit Matlab auseinander gesetzt.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.02.2020, 20:54     Titel:
  Antworten mit Zitat      
Hallo,

wenn du for-Schleifen verwenden sollst, dann eine über die Zeilen- und eine über die Spaltenelemente. Dann kannst du Zeilen- und Spaltenindex vergleichen und basierend darauf entscheiden, welcher Wert vergeben werden soll.

Zitat:
Ich hab mich auch noch nicht wirklich mit Matlab auseinander gesetzt.

Dann sollte das MATLAB Onramp ein guter Startpunkt sein:
https://www.mathworks.com/learn/tutorials/matlab-onramp.html

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Swiffer258
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 12.02.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.02.2020, 21:37     Titel:
  Antworten mit Zitat      
Okay, vielen Dank! Onramp werde ich mal machen!Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Swiffer258
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 12.02.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.02.2020, 22:58     Titel:
  Antworten mit Zitat      
hab mal ein bisschen ausprobiert und bin schluss endlich bei diesem Code gelandet. Die Ausgabe ist aber noch nicht so wie sie sein soll. Ich weiß nicht genau wie ich hier eine Matrix einfüge, deshalb versuche ich es mal so.
2 -1 3
-1 2 -1
3 3 2

Der Wert A(3,2) müsste eigentlich -1 sein, ich verstehe nicht, warum das nicht der Fall ist.

Code:
for i = 1:m
    for j = 1:n
        if i==j
            A(i,j)=2;
        elseif i-j==-1
            A(i,j)=-1;
        elseif i-j==1
            A(i,j)=-1;
        else
            A(i,j)=3
        end
    end
end
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.02.2020, 23:46     Titel:
  Antworten mit Zitat      
Hallo,

wenn ich m = 3 und n = 3 setze und deinen Code ausführe, kommt

2 -1 3
-1 2 -1
3 -1 2

heraus.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Swiffer258
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 12.02.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.02.2020, 00:07     Titel:
  Antworten mit Zitat      
Okay, ich hab den Fehler gefunden. Er lag einfach an der Ausgabe. Vielen Dank für deine Antworten, du hast mir wirklich sehr geholfen!
viele Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.