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

Fehler bei der Graphik-Erstellung. Bitte um Unterstützung

 

Ben20
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 14.05.10
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 17.05.2010, 21:50     Titel: Fehler bei der Graphik-Erstellung. Bitte um Unterstützung
  Antworten mit Zitat      
Hallo Leute,

ich möchte das Fliegen eines Flugzeugs simulieren. Dafür habe ich eine s-function mit drei Eingängen.

u(1)=Position in x-Richtung
u(2)=Position in y-Richtung
u(3)=Position in z-Richtung

Was fehlt hier noch? Die ganzen Linien die erstellt werden, sind erst mal dahergestellt.

Die Fehlermeldungen kommen bei global, und bei allen f1 bis f13? Wieso werden die nicht erkannt?

Würde mich über alle Tipps freuen

MfG Ben

Code:
function [sys,xa,str,ts] = Life_Graphik_Flying(t,x,u,flag)

persistent p_1;

switch flag,

  case 0   % Init Block
    sizes = simsizes;
    sizes.NumContStates     = 0;
    sizes.NumDiscStates     = 0;
    sizes.NumInputs         = 3;   % Anzahl u
    sizes.NumOutputs        = 0;
    sizes.DirFeedthrough    = 0;
    sizes.NumSampleTimes    = 1;

    sys = simsizes(sizes);
    str = [];
    xa  = [];
    ts  = [-1 0];

   
   
     clear global  f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13;
           global  f1 f2 f3  f4 f5 f6 f7 f8 f9 f10 f11 f12 f13;
       
    %% User
   
    figure(1); clf;
   
    set(gcf,'color', [1 1 1]*.8, ...
            'name', 'I believe I can fly',...
            'numbertitle','off');
         
    p_1 = line('marker','o','markerfacecolor','k','markersize',4 ,...
    'erasemode','none','Xdata',[],'Ydata', [], 'Zdata', []);
   
    axis equal;
    axis ([-500 5000 -500 5000 -1000 5000]);
    grid off;
   
    set(gca,'color', [1 1 1]*.8 );
   
    f1  = line('xData',[],'yData',[],'Color','k','lineWidth',2,'EraseMode',EraseM);
    f2  = line('xData',[],'yData',[],'Color','k','lineWidth',2,'EraseMode',EraseM);
    f3  = line('xData',[],'yData',[],'Color','k','lineWidth',2,'EraseMode',EraseM);
    f4  = line('xData',[],'yData',[],'Color','k','lineWidth',2,'EraseMode',EraseM);
    f5  = line('xData',[],'yData',[],'Color','k','lineWidth',2,'EraseMode',EraseM);
    f6  = line('xData',[],'yData',[],'Color','k','lineWidth',2,'EraseMode',EraseM);
    f7  = line('xData',[],'yData',[],'Color','k','lineWidth',2,'EraseMode',EraseM);
    f8  = line('yData',[],'zData',[],'Color','k','lineWidth',2,'EraseMode',EraseM);
    f9  = line('yData',[],'zData',[],'Color','k','lineWidth',2,'EraseMode',EraseM);
    f10 = line('yData',[],'zData',[],'Color','k','lineWidth',2,'EraseMode',EraseM);
    f11 = line('yData',[],'zData',[],'Color','k','lineWidth',2,'EraseMode',EraseM);
    f12 = line('yData',[],'zData',[],'Color','k','lineWidth',2,'EraseMode',EraseM);
    f13 = line('yData',[],'zData',[],'Color','k','lineWidth',2,'EraseMode',EraseM);
   
    case 2  %Aktualisierung
       
    sys =[];
   
    global  f1 f2 f3  f4 f5 f6 f7 f8 f9 f10 f11 f12 f13;
   
        figure(1);
        hold on;
   
        x1 = -4.5;  y1 = -0.5;    x2 = 5.5;     y2 = -0.5;
        set(f1,'xData',[u(1)+x1-y1 u(1)+x2-y2],...
               'yData',[u(2)+x1+y1 u(2)+x2+y2]);
           
        x1 = 5.5;  y1 = -0.5;    x2 = 6;     y2 = 0.5;
        set(f2,'xData',[u(1)+x1-y1 u(1)+x2-y2],...
               'yData',[u(2)+x1+y1 u(2)+x2+y2]);

        x1 = 6;  y1 = 0.5;    x2 = 4;     y2 = 1.5;
        set(f3,'xData',[u(1)+x1-y1 u(1)+x2-y2],...
               'yData',[u(2)+x1+y1 u(2)+x2+y2]);

        x1 = 4;  y1 = 1.5;    x2 = -3;     y2 = 1.5;
        set(f4,'xData',[u(1)+x1-y1 u(1)+x2-y2],...
               'yData',[u(2)+x1+y1 u(2)+x2+y2]);
           
        x1 = -3;  y1 = 1.5;    x2 = -4;     y2 = 3.5;
        set(f5,'xData',[u(1)+x1-y1 u(1)+x2-y2],...
               'yData',[u(2)+x1+y1 u(2)+x2+y2]);
           
        x1 = -4;  y1 = 3.5;    x2 = -5;     y2 = 3.5;
        set(f6,'xData',[u(1)+x1-y1 u(1)+x2-y2],...
               'yData',[u(2)+x1+y1 u(2)+x2+y2]);
           
        x1 = -5;  y1 = 3.5;    x2 = -4.5;   y2 = -0.5;
        set(f7,'xData',[u(1)+x1-y1 u(1)+x2-y2],...
               'yData',[u(2)+x1+y1 u(2)+x2+y2]);
         
        x1 = 1.5;  z1 = 0;    x2 = -2.5;    z2 = 4.5;
        set(f8,'xData',[u(1)+x1-z1 u(1)+x2-z2],...
               'zData',[u(3)+x1+z1 u(3)+x2+z2]);
           
        x1 = -2.5;  z1 = 4.5;    x2 = -4;   z2 = 4.5;
        set(f9,'xData',[u(1)+x1-z1 u(1)+x2-z2],...
               'zData',[u(3)+x1+z1 u(3)+x2+z2]);

        x1 = -4;  z1 = 4.5 ;    x2 = -1.5;   z2 = 0;
        set(f10,'xData',[u(1)+x1-z1 u(1)+x2-z2],...
               'zData',[u(3)+x1+z1 u(3)+x2+z2]);

        x1 = -1.5;  z1 = 0;    x2 = -4;     z2 = -4.5;
        set(f11,'xData',[u(1)+x1-z1 u(1)+x2-z2],...
               'zData',[u(3)+x1+z1 u(3)+x2+z2]);
           
        x1 = -4;  z1 = -4.5;    x2 = -2.5;   z2 = -4.5;
        set(f12,'xData',[u(1)+x1-z1 u(1)+x2-z2],...
               'zData',[u(3)+x1+z1 u(3)+x2+z2]);
           
        x1 = -2.5;  z1 = -4.5;    x2 = 1.5;   z2 = 0;
        set(f13,'xData',[u(1)+x1-z1 u(1)+x2-z2],...
               'zData',[u(3)+x1+z1 u(3)+x2+z2]);
           
           
    set(p_1, 'Xdata', u(1), 'Ydata', u(2),'Zdata', -u(3),'k');
   
      %plot3(u(1),u(2),u(3),'k');
     
    drawnow;
   
   
end;
 
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 17.05.2010, 23:06     Titel:
  Antworten mit Zitat      
Hallo,

passiert der Fehler in 2. Case (Aktualisierung-Block)?
Wird Überhaupt Init-Block ausgeführt?
Bist du sicher dass du deine Variablen nirgendwo löschst?
Private Nachricht senden Benutzer-Profile anzeigen
 
Ben20
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 14.05.10
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 18.05.2010, 14:00     Titel:
  Antworten mit Zitat      
Also die Fehler kommen bei case0 bei global (bei clear global nicht) und bei case2 die gesamte Zeile "global f1 ... f13". Und alle f von f1 - 13 sind alle rot unterstrichen.

Wie muss ich die den schreiben kommen da ein paar sachen von case2 in case0. Oder was ist da falsch? Beim Ausführen passiert nichts, da kommt gleich eine Fehlermeldung: flag=0(initialize), at start of simulation und undefinded functino or variable 'EraseM'

Könnt ihr mir bitte helfen
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 18.05.2010, 14:49     Titel:
  Antworten mit Zitat      
EraseM musst du noch definieren, oder Funktionskopf übergeben.

Also ich habe soweit alles verbessert, damit es läuft, lies Kommentare
Code:

function [sys,xa,str,ts] = Life_Graphik_Flying(t,x,u,flag)

persistent p_1;
%
% also es darf nur einmal in Funktion definiert werden.
global  f1 f2 f3  f4 f5 f6 f7 f8 f9 f10 f11 f12 f13;

% musst du noch irgendwie übergeben
EraseM  = 'normal';
switch flag,

  case 0   % Init Block

% die Stelle habe ich auskommentiert damit es bei mir läuft
% notfalls zurück verändern
sys = []
%     sizes = simsizes;
%     sizes.NumContStates     = 0;
%     sizes.NumDiscStates     = 0;
%     sizes.NumInputs         = 3;   % Anzahl u
%     sizes.NumOutputs        = 0;
%     sizes.DirFeedthrough    = 0;
%     sizes.NumSampleTimes    = 1;
%
%     sys = simsizes(sizes);

    str = [];
    xa  = [];
    ts  = [-1 0];

   % Ich denke wenn du Globale Variable löschen möchtest, dann
   % besser das über flag zu machen
    % In Prinzip ist das hier nicht notwendig, weil du da unten CLF
    % verwendest
    lh = [f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13];
    delete(lh (ishandle(lh )));

       
    %% User
   
    figure(1); clf;
   
    set(gcf,'color', [1 1 1]*.8, ...
            'name', 'I believe I can fly',...
            'numbertitle','off');
         
    p_1 = line('marker','o','markerfacecolor','k','markersize',4 ,...
    'erasemode','none','Xdata',[],'Ydata', [], 'Zdata', []);
   
    axis equal;
    axis ([-500 5000 -500 5000 -1000 5000]);
    grid off;
   
    set(gca,'color', [1 1 1]*.8 );
   
    % du kannst keine leere Arrays übergeben,
    %  mit NaN vorinitialisieren
    f1  = line('xData',[NaN NaN],'yData',[NaN NaN],'Color','k','lineWidth',2,'EraseMode',EraseM);
    f2  = line('xData',[NaN NaN],'yData',[NaN NaN],'Color','k','lineWidth',2,'EraseMode',EraseM);
    f3  = line('xData',[NaN NaN],'yData',[NaN NaN],'Color','k','lineWidth',2,'EraseMode',EraseM);
    f4  = line('xData',[NaN NaN],'yData',[NaN NaN],'Color','k','lineWidth',2,'EraseMode',EraseM);
    f5  = line('xData',[NaN NaN],'yData',[NaN NaN],'Color','k','lineWidth',2,'EraseMode',EraseM);
    f6  = line('xData',[NaN NaN],'yData',[NaN NaN],'Color','k','lineWidth',2,'EraseMode',EraseM);
    f7  = line('xData',[NaN NaN],'yData',[NaN NaN],'Color','k','lineWidth',2,'EraseMode',EraseM);
    f8  = line('yData',[NaN NaN],'zData',[NaN NaN],'Color','k','lineWidth',2,'EraseMode',EraseM);
    f9  = line('yData',[NaN NaN],'zData',[NaN NaN],'Color','k','lineWidth',2,'EraseMode',EraseM);
    f10 = line('yData',[NaN NaN],'zData',[NaN NaN],'Color','k','lineWidth',2,'EraseMode',EraseM);
    f11 = line('yData',[NaN NaN],'zData',[NaN NaN],'Color','k','lineWidth',2,'EraseMode',EraseM);
    f12 = line('yData',[NaN NaN],'zData',[NaN NaN],'Color','k','lineWidth',2,'EraseMode',EraseM);
    f13 = line('yData',[NaN NaN],'zData',[NaN NaN],'Color','k','lineWidth',2,'EraseMode',EraseM);
   
    case 2  %Aktualisierung
       
    sys =[];  
   
        figure(1);
        hold on;
   
        x1 = -4.5;  y1 = -0.5;    x2 = 5.5;     y2 = -0.5;
        set(f1,'xData',[u(1)+x1-y1 u(1)+x2-y2],...
               'yData',[u(2)+x1+y1 u(2)+x2+y2]);
           
        x1 = 5.5;  y1 = -0.5;    x2 = 6;     y2 = 0.5;
        set(f2,'xData',[u(1)+x1-y1 u(1)+x2-y2],...
               'yData',[u(2)+x1+y1 u(2)+x2+y2]);

        x1 = 6;  y1 = 0.5;    x2 = 4;     y2 = 1.5;
        set(f3,'xData',[u(1)+x1-y1 u(1)+x2-y2],...
               'yData',[u(2)+x1+y1 u(2)+x2+y2]);

        x1 = 4;  y1 = 1.5;    x2 = -3;     y2 = 1.5;
        set(f4,'xData',[u(1)+x1-y1 u(1)+x2-y2],...
               'yData',[u(2)+x1+y1 u(2)+x2+y2]);
           
        x1 = -3;  y1 = 1.5;    x2 = -4;     y2 = 3.5;
        set(f5,'xData',[u(1)+x1-y1 u(1)+x2-y2],...
               'yData',[u(2)+x1+y1 u(2)+x2+y2]);
           
        x1 = -4;  y1 = 3.5;    x2 = -5;     y2 = 3.5;
        set(f6,'xData',[u(1)+x1-y1 u(1)+x2-y2],...
               'yData',[u(2)+x1+y1 u(2)+x2+y2]);
           
        x1 = -5;  y1 = 3.5;    x2 = -4.5;   y2 = -0.5;
        set(f7,'xData',[u(1)+x1-y1 u(1)+x2-y2],...
               'yData',[u(2)+x1+y1 u(2)+x2+y2]);
         
        x1 = 1.5;  z1 = 0;    x2 = -2.5;    z2 = 4.5;
        set(f8,'xData',[u(1)+x1-z1 u(1)+x2-z2],...
               'zData',[u(3)+x1+z1 u(3)+x2+z2]);
           
        x1 = -2.5;  z1 = 4.5;    x2 = -4;   z2 = 4.5;
        set(f9,'xData',[u(1)+x1-z1 u(1)+x2-z2],...
               'zData',[u(3)+x1+z1 u(3)+x2+z2]);

        x1 = -4;  z1 = 4.5 ;    x2 = -1.5;   z2 = 0;
        set(f10,'xData',[u(1)+x1-z1 u(1)+x2-z2],...
               'zData',[u(3)+x1+z1 u(3)+x2+z2]);

        x1 = -1.5;  z1 = 0;    x2 = -4;     z2 = -4.5;
        set(f11,'xData',[u(1)+x1-z1 u(1)+x2-z2],...
               'zData',[u(3)+x1+z1 u(3)+x2+z2]);
           
        x1 = -4;  z1 = -4.5;    x2 = -2.5;   z2 = -4.5;
        set(f12,'xData',[u(1)+x1-z1 u(1)+x2-z2],...
               'zData',[u(3)+x1+z1 u(3)+x2+z2]);
           
        x1 = -2.5;  z1 = -4.5;    x2 = 1.5;   z2 = 0;
        set(f13,'xData',[u(1)+x1-z1 u(1)+x2-z2],...
               'zData',[u(3)+x1+z1 u(3)+x2+z2]);
           
           
    set(p_1, 'Xdata', u(1), 'Ydata', u(2),'Zdata', -u(3),'k');
   
      %plot3(u(1),u(2),u(3),'k');
     
    drawnow;
   
 % ich denke es ist besser Variablen nicht bei INIT zu löschen
 % da sie müssen ja vorher ja definiert sein.
  case -1 % clear

     clear global f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 f13;
end;
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Ben20
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 14.05.10
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 18.05.2010, 15:24     Titel:
  Antworten mit Zitat      
Hey vielen Dank für deine Mühe. Aber leider läuft bei mir leider nicht. Wenn ich es so ausführe ohne etwas zu ändern kommt folgende Meldung:

Sizes vector returned by M-File S-function 'Life_Graphik_Flying' in 'Fliegen/S-Function' must be a real vector consisting of integer value of length 7.

und wenn ich den Anfang auskommentiere kommt folgendes:

Error in 'Fliegen/S-Function' while executing M-File S-function 'Life_Graphik_Flying', flag = 2 (update), at time 0. MATLAB error message:
Error using ==> set
Invalid parameter/value pair arguments.

Leider werde ich aus den Fehlermeldungen nicht schlau, weil ich nicht verstehe was der jetzt von mir will!

Und ich habe mich ehrlich gesagt noch nicht oft mit der Graphikerstellung beschäftigt. Und wo kann ich EraseM übergeben? In dieser Datei oder in der Simulink Ebene?

Nochmals vielen Dank
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 18.05.2010, 16:05     Titel:
  Antworten mit Zitat      
Nach deinem Code muss zuerst INIT ausführen und erst dann AUSFUEHREN-Block, weil Linien müssen vorher erzeugt werden.

Also bitte deine Schritte ausführlicher beschreiben, besonders deine Aufrufe interessant.
Private Nachricht senden Benutzer-Profile anzeigen
 
Ben20
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 14.05.10
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 18.05.2010, 16:47     Titel:
  Antworten mit Zitat      
Führt das Programm beim Starten nicht die Schritte selber aus? Also wie gesagt ich bin Anfänger in Matlab, das interessiert mich auch wirklich aber es gibt leider echt momente wo ich nicht mehr weiter weiß.

Und ich bin mir auch nicht sicher ob das Flugzeug was ich da zeichnen möchte überhaupt gezeichnet werden kann, die grobe Kontur vom Flugzeug also der Rumpf ist schon mal da den sieht man nach einer Fehler Meldung. Ich möchte aber auch das die Flügel senkrecht dazu hinausragen. Aber leider habe ich die Koordinaten falsch gewählt, das Flugzeug liegt im Moment schief!

Wenn du möchtest kann ich dir ja mal das Programm schicken, schreibst mir dann eine private Nachricht mit deiner Email. Also nur wenn du dazu bereit bist. Ich gebe mir wirklich mühe, aber ich mache da jetzt schon lange herum, möchte das es endlich mal weitergeht.

Würde mich sehr freuen. Danke im voraus
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 18.05.2010, 21:38     Titel:
  Antworten mit Zitat      
Hallo

Zitat:

Error in 'Fliegen/S-Function' while executing M-File S-function 'Life_Graphik_Flying', flag = 2 (update), at time 0. MATLAB error message:
Error using ==> set
Invalid parameter/value pair arguments.



diesen Fehler verursachte folgende Zeile, set(p_1, 'Xdata', u(1), 'Ydata', u(2),'Zdata', -u(3),'k'); Property k ist unbekannt und darum kam es zu Fehlermeldung.

Ich frage mich, warum es letztes Mal bei mir durchgelaufen. Echt komisch!

Code:

set(p_1, 'Xdata', u(1), 'Ydata', u(2),'Zdata', -u(3));
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Ben20
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 14.05.10
Wohnort: Stuttgart
Version: ---
     Beitrag Verfasst am: 19.05.2010, 14:58     Titel:
  Antworten mit Zitat      
Danke, ich will dich nicht nerven. Du hast wirklich schon viel getan, aber wie bekomme ich nun die Grafik die ich erstellt habe in den Punkt hinein der da herumfliegt. Die Grafik bewegt sich nur in der x-y-Ebene bei 0. Der soll sich mit dem Punkt bewegen. Aber ich kann beim Zeichen auch nicht die z-Achse ansprechen.
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 - 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.