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

Erste Schritte Matlab: Aufgabe

 

Hansi92
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 21.11.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.11.2018, 21:47     Titel: Erste Schritte Matlab: Aufgabe
  Antworten mit Zitat      
]Hallo ich bin neu hier im Forum. Ich tue mir schwer mit der Informatik. Ich habe folgende Aufgabe zu lösen und wollte fragen ob mir jemand den Code erklären könnte der dazu notwendig ist.


Schreiben Sie ein MATLAB-Programm GeschachtelteSchleife.m, das folgende Zahlen ziffernweise ausgibt. Überlegen Sie sich eine geeignete Schleifenkonstruktion:

1 3 5
4 6 8
7 9 11
10 12 14
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: 21.11.2018, 22:34     Titel:
  Antworten mit Zitat      
Hallo,

was genau hast du bisher versucht? Dass zwei geschachtelte for-Schleifen notwendig sind, schreibst du ja selbst schon. Dann leg mal los?

Falls dir komplett der Einstieg fehlt, siehe hier:
https://de.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
 
Hansi92
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 21.11.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.11.2018, 13:16     Titel:
  Antworten mit Zitat      
zwei for-schleifen?
damit soll es funktionieren? ich habe for und while versucht alle was ich hinbekomme ist:


Code:
i=1;
while(i<7)
   
 fprintf('%i ',i);
   
 i=i+2;

end


Ausgabe 1 3 5

[EDITED, Jan, Bitte Code-Umgebung verwenden - Danke!]
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 22.11.2018, 16:50     Titel:
  Antworten mit Zitat      
Hallo Hansi92,

Guter Anfang. FOR und WHILE-Schleifen sind prinzipiell equivalent. Bei letzteren kann man allerdings das Abbruch-Kriterium innerhalb der Schleife ändern, bei ersterem nicht.

Deine WHILE-Schleife als etwas einfachere FOR-Schleife:
Code:
for i = 1:2:5
  fprintf('%i ',i);
end

Nun brauchst Du, wie schon erwähnt, noch eine zweite Schleife drum herum. Entweder Du lässt dann die innere Schleife nicht mehr bei 1 starten, sondern beim aktuellen Wert der äußeren Schleife. Oder Du addierst den Wert des äußeren Schleifenzählers im fprintf Befehl dazu.

Viele Erfolg, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Hansi92
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 21.11.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.11.2018, 18:10     Titel:
  Antworten mit Zitat      
Danke für die Antworten, ich habe es jetzt mal mit for-schleifen probiert.

Das ist mein theoretisches Ergebnis:

Code:
for i=0:2
    m = i*3
    x = 0
    for j=1:3
        k=x+j+m
        fprintf('%k ,k');
        x+1
    end
    fprintf('\n')
end    


Was mache ich Falsch?


[EDITED, Jan, Bitte Code-Umgebung verwenden - Danke!]
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: 22.11.2018, 18:39     Titel:
  Antworten mit Zitat      
Hallo,

mehrere Kleinigkeiten:
Syntax von fprintf war falsch, Strichpunkte fehlten, und wenn du x um 1 erhöhen willst, dann solltest du das auch wieder in eine Variable (x?) zurückschreiben.

Code:
for i=0:2
m = i*3;
x = 0;
for j=1:3
k=x+j+m;
fprintf('%i ',k);
x = x+1;
end
fprintf('\n')
end


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
 
Hansi92
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 21.11.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.11.2018, 18:50     Titel:
  Antworten mit Zitat      
Okay vielen danke. Ich hoffe mit Übung wird mein algorithmisches Denken besser mit der Zeit.
Private Nachricht senden Benutzer-Profile anzeigen
 
Hansi92
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 21.11.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.11.2018, 20:34     Titel:
  Antworten mit Zitat      
Noch eine Frage: Welches alternative Programm ist noch möglich zur Lösung dieser Aufgabe?
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: 22.11.2018, 21:31     Titel:
  Antworten mit Zitat      
Hallo,

was genau meinst du damit?
Welchen Code man noch verwenden könnte? Ich würde direkt k = 3*i + 2*j schreiben, und man könnte die Zahlen in einer Matrix sammeln statt jede einzeln auszugeben.

Oder am einfachsten bzw. zumindest am kompaktesten:
Code:
(1:3:10)' + (0:2:4)


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
 
Hansi92
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 21.11.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.11.2018, 13:48     Titel:
  Antworten mit Zitat      
Okay ich habs.
Kann mir jemand vielleicht den Unterschied zwischen einer rekursiven und einer interaktiven Programmierung verständlich machen? Ich bin jetzt beim Thema Funktionen angelangt.
Also ich habe verstanden das Funktionen Unterprogramme sind die man bei Bedarf aufrufen kann und welche man mit Eingabewerten füttert und welche mir dann Ausgabewerte zurückgibt.
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: 24.11.2018, 14:07     Titel:
  Antworten mit Zitat      
Hallo,

rekursiv: Programm ruft sich selbst auf
interaktiv: Anwender kann während des Programmablaufs Einfluss auf die Ausführung nehmen, z.B. über Dialogboxen und Auswahlmöglichkeiten

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
 
Hansi92
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 21.11.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.11.2018, 14:57     Titel:
  Antworten mit Zitat      
Code:
function(x) = eingabe(f)
x=5;
for t=6:1:f
x=x+t;
end
x


kann man das als iterative Funktion von der Summe:
E von x=5 bis f von x=5+6+7+8+....+n betrachten?
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: 24.11.2018, 18:16     Titel:
  Antworten mit Zitat      
Hallo,

das ist eine Iteration, ja. Grundsätzlich ist alles, was for oder while enthält, iterativ. Eben hast du aber noch nach interaktiv gefragt.

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
 
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.