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

mit fprintf Matrizen richtig anzeigen lassen

 

mainboarder3108
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 04.01.22
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 04.01.2022, 23:21     Titel: mit fprintf Matrizen richtig anzeigen lassen
  Antworten mit Zitat      
Moin,

simple Aufgabe: Den Abstand einer Koordinate zum Ursprung errechnen. Die alten Ergebnisse sollen nach einem neuen Run zusätzlich angezeigt werden.

Als Output muss ein fprintf Befehl genutzt werden.

Der Aufbau war wie folgt:

Code:
%
%%
clear
%
flag=0
%
P = input('Bitte geben Sie die Koordinaten ein [X,Y]:')
X = P(1); Y = P(2);
while X~=0 | Y~=0

    d = sqrt(X^2 + Y^2);
    if flag==0
        VfA = [X,Y,d];
        flag=flag+1;
    else
        VfA = [VfA; X,Y,d];
    end
    formatSpec = 'Der %d Abstand ist %4.3f bei X=%4.1f und Y=%4.1f \n';
    fprintf(formatSpec,flag,VfA(:,3),VfA(:,1),VfA(:,2));
    %
    P = input('Bitte geben Sie die Koordinaten ein [X,Y]:');
    X = P(1); Y = P(2);
end
 


Der erste Run geht immer Gut, bei den Folgenden kommt er dann durcheinander.. Vielleicht hat jemand eine Idee die Matritzen anders auseinander zu nehmen damit der fprintf Befehl eine Bessere zuordnung hat.

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: 05.01.2022, 10:39     Titel:
  Antworten mit Zitat      
Hallo,

ein Problem dürfte sein, dass die Spalten von VfA mehrere Werte beinhalten, flag aber immer nur einen.

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

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 04.01.22
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 05.01.2022, 19:46     Titel:
  Antworten mit Zitat      
Ja stimmt, das hatte ich nicht beachtet. Aber das war auch tatsächlich weniger das Problem. Selbst ohne flag im Output bekomme ich die VfA Matrix Daten nicht in die richtige Reihenfolge:

Code:

%%
clear
%
%
flag=0;
%
P = input('Bitte geben Sie die Koordinaten ein [X,Y]:');
X = P(1); Y = P(2);
while X~=0 | Y~=0

    d = sqrt(X^2 + Y^2);
    if flag==0
        VfA = [X,Y,d];
        flag=flag+1;
    else
        VfA = [VfA; X,Y,d];
    end
    formatSpec = 'Der Abstand ist %4.3f bei X=%4.1f und Y=%4.1f \n';
    fprintf(formatSpec,VfA(:,3),VfA(:,1),VfA(:,2));
    %
    P = input('Bitte geben Sie die Koordinaten ein [X,Y]:');
    X = P(1); Y = P(2);
end
 


Outpt bei 3x [8,7]:

Bitte geben Sie die Koordinaten ein [X,Y]:[8,7]
Der Abstand ist 10.630 bei X= 8.0 und Y= 7.0
Bitte geben Sie die Koordinaten ein [X,Y]:[8,7]
Der Abstand ist 10.630 bei X=10.6 und Y= 8.0
Der Abstand ist 8.000 bei X= 7.0 und Y= 7.0
Bitte geben Sie die Koordinaten ein [X,Y]:[8,7]
Der Abstand ist 10.630 bei X=10.6 und Y=10.6
Der Abstand ist 8.000 bei X= 8.0 und Y= 8.0
Der Abstand ist 7.000 bei X= 7.0 und Y= 7.0
Bitte geben Sie die Koordinaten ein [X,Y]:
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: 05.01.2022, 22:07     Titel:
  Antworten mit Zitat      
Hallo,

eine Matrix aus den Werten bilden und sie transponieren.

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

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 04.01.22
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 06.01.2022, 19:11     Titel: Lösung für: Matritzen in fprintf anzeigen lassen
  Antworten mit Zitat      
Hey Harald, Vielen dank für den Tipp. fprintf liest die Matrix ja etwas anders.. Daraufhin hab ich mir eine Endmatrix aus VfA und flag gebaut um die im Ausgabetext in der richtigen reihenfolge ausgeben zu lassen.

Vielleicht hilft es ja Jemanden:

Code:

%%
clear
%
flag=[0];
%
P = input('Bitte geben Sie die Koordinaten ein [X,Y]:');
X = P(1); Y = P(2);
while X~=0 | Y~=0

    d = sqrt(X^2 + Y^2);
    if flag==[0]
        VfA = [d,X,Y];        
        flag = flag + 1;
        Mflag = flag
        FVfA = [Mflag,VfA]'

    else
        VfA = [VfA;d,X,Y];
        flag = flag + 1;
        Mflag = [Mflag;flag]
        FVfA = [Mflag,VfA]'
       

    end
   
    printSpec = 'Der %d. Abstand beträgt %f bei X = %d und Y = %d \n';
    fprintf(printSpec,FVfA)
    P = input('Bitte geben Sie die Koordinaten ein [X,Y]:');
    X = P(1); Y = P(2);
end
%
 


nach dem 4. Durchlauf sieht der Output dann so aus:
Code:

FVfA =

    1.0000    2.0000    3.0000    4.0000
  810.3191  543.2826    9.4340   10.8167
  549.0000  100.0000    5.0000    6.0000
  596.0000  534.0000    8.0000    9.0000

Der 1. Abstand beträgt 810.319073 bei X = 549 und Y = 596
Der 2. Abstand beträgt 543.282615 bei X = 100 und Y = 534
Der 3. Abstand beträgt 9.433981 bei X = 5 und Y = 8
Der 4. Abstand beträgt 10.816654 bei X = 6 und Y = 9
Bitte geben Sie die Koordinaten ein [X,Y]:
 
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.