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

Speichern in matlab

 

Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 24.07.2013, 19:56     Titel:
  Antworten mit Zitat      
guguli hat Folgendes geschrieben:
Hi, danke.

nun will ich einen graph zeichen, der mir die strecke anzeigt, die nach der reihe Y, Z, X zurücklegen.
Soll heißen die koordinaten für Y = (0,2,0) ist. usw. dann Z und dann X. wie kann ich auf diese werte nun zugreifen?????
THX

ich versteh die frage leider nicht. auf elemente einer matrix greifst du über den index zu und plotten kannst du mit plot oder was auch immer.
wenn das hier eine neue frage wird gehört das eigentlich in einen neuen thread.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen


guguli
Themenstarter

Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 04.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.07.2013, 09:31     Titel:
  Antworten mit Zitat      
also, ich hab eine ganz einfache funktion geschriebn, wo mit ich das erste Element ausgeben möchte.
Code:

function y= myfun(Xcoordinate)
a = Xcoordinate(1,1);
y= a;
end
 

Ich möchte jetzt eine schleife, mit der ich die erste splate alle zeilen durch gehe und die werte in einem Index speichern. Das problem ist ich weiss nicht wieviel zeilen ich habe. Sad wie sieht so ne schleife denn aus?
ich hab das ma so probiert :
Code:

i = 1;
index = 1;

while(Xcoordinates(i,1))
    index = Xcoordinates(i,1);
    i = i+1;
   
    index= index +1;
end
 

kriege aber diese Fehlermeldung :
Attempted to access Xcoordinates(5,1); index out of bounds because size(Xcoordinates)=[4,4,11].

Was muss ich denn da ändern??
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 25.07.2013, 09:47     Titel:
  Antworten mit Zitat      
guguli hat Folgendes geschrieben:

Code:

function y= myfun(Xcoordinate)
a = Xcoordinate(1,1);
y= a;
end
 


du must a nicht als zwischenvariable einfügen. und die funktion giebt dir immer nur das erste element zurück.. weis nicht ob das sinnvoll ist.
guguli hat Folgendes geschrieben:

Code:

i = 1;
index = 1;

while(Xcoordinates(i,1))
    index = Xcoordinates(i,1);
    i = i+1;
   
    index= index +1;
end
 


erst weist du index einen wert zu und dann erhöhst du ihn um 1 glaube das meinst du nicht. und in der schleife läufst du immer über die grenzen der matrix hinaus. das geht so nicht.
meinst du vielleicht einfach
Code:
Xcoordinates(:,1)
um alle werte der ersten spalte zu bekommen ?
das sind grundlagen von matlab. guck sonst nochmal ins getting startet. da seht drin wie man matritzen indiziert.
grüße winkow
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
guguli
Themenstarter

Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 04.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.07.2013, 10:39     Titel:
  Antworten mit Zitat      
ja das kenn ich aber das problem ist, ich hab 3 unterschiedlich größe matrizen. wie kann ich die alle gleich groß machen damit ich die so plotten kann ???
Code:
y = Ycoordinates(:,1);
z = Zcoordinates(:,1);
x = Xcoordinates(:,1);
plot3(y,z,x)
xlabel('x')
ylabel('y')
zlabel('z')
grid on
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 25.07.2013, 10:54     Titel:
  Antworten mit Zitat      
eine möglichkeit wäre erstmal die länge von allen zu bestimmen und dann die kürzeste zu nehmen. wenn du aber x y z coordinaten erzeugst warum sind es dann nicht gleich viele?
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
guguli
Themenstarter

Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 04.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.07.2013, 11:09     Titel:
  Antworten mit Zitat      
Also ich möchte einfach den verlauf meines Werkzeuges in der Simulation, die ich erzeugt habe mit einem graphen darstellen. Das werkzeug bewegt sich zuerst in Y dann in Z dann in X Richtung. Ich wusste nicht wie ich das besser machen kann.
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 25.07.2013, 11:14     Titel:
  Antworten mit Zitat      
dann müssten es trotzdem gleich viele werte sein ^^ wenn du es in y bewegst hast du doch trotzdem x und z koordinate. die bleiben nur gleich. wenn du das nicht gespeichert hast musst du die daten nachträglich generieren.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
guguli
Themenstarter

Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 04.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.07.2013, 11:48     Titel:
  Antworten mit Zitat      
ok dann muss ich das ganz von vorne anfangen.

Also jedes Mal wenn mein Werkzeug sich bewegt dann ändert sich entweder x oder y oder z wert. um das jedesmal zu speichern, habich so gemacht:
Code:
Y_index = 1;
Y_coodrdinate = zeros(y - Ytsp,y - Ytsp,y - Ytsp);
 Y_coodrdinate(Y_index,Y_index,Y_index) = [X_current, Y_current, Z_current];
                  Y_index = Y_index +1;


die fehler meldung ist dann:
Subscripted assignment dimension mismatch (size [1 x 1] ~= size [1 x 3]).
wie kann ich den size von indes
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 25.07.2013, 11:57     Titel:
  Antworten mit Zitat      
du vesuchst 3 elemente in einem einiziegen element einer 3 dimensionalen matrix zu speichern.. ich weis garnicht wo ich anfangen soll ^^ du solltest wirklich nochmal das getting startet zu matlab lesen. dir scheint nicht wirklich klar zu sein was du machst.
Code:
Y_index = 1;
Y_coodrdinate = zeros(y - Ytsp,3);
 Y_coodrdinate(Y_index,:) = [X_current, Y_current, Z_current];
                  Y_index = Y_index +1;

vieleicht so,,, hängt davon ab wie der rest aussiht.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
guguli
Themenstarter

Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 04.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.07.2013, 12:07     Titel:
  Antworten mit Zitat      
hmmm, damit kriege ichdiese Fehlemeldung:
Subscripted assignment dimension mismatch (size [1 x 4] ~= size [1 x 3]).

Ka wieso ich immer eine D mehr habe Sad...
Private Nachricht senden Benutzer-Profile anzeigen
 
guguli
Themenstarter

Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 04.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.07.2013, 10:37     Titel:
  Antworten mit Zitat      
Ich hab das wie folgt geändert. Ich kriege aber nur den letzten wert, der berechnet wird, und nicht alle werte. ich soll eigentlich diese bekommen:
1 2 1, 1 3 1, 1 4 1, 1 5 1 , 1 6 1
ich krieg aber nur 1 6 1

Code:
function [b,c] = fcn()
    knochen_Value = 1;
    fleich_value = 2;
   welt = zeros(10,10,10);
    Xtsp= 1;
    Ytsp = 1;
    Ztsp = 1;

    % tool current Position
    X_current=Xtsp;
    Y_current=Ytsp;
    Z_current=Ztsp;
    welt (X_current, Y_current, Z_current);
   
     welt(5,4,5) = knochen_Value;
     y = 6;
    Vy = 0.036;
    Y_runTime = (y - Ytsp)/ Vy;
   
    Y_Timer=0;
   index= 1;
  released = zeros(1, 3);
  while(Y_Timer < Y_runTime)
           Y_current = Y_current+1;
           Y_Timer = Y_Timer+ (Y_runTime/ (y - Ytsp));
             
            if(welt (X_current, Y_current, Z_current) ~= fleich_value && welt (X_current, Y_current, Z_current) ~= knochen_Value)
                 welt (X_current, Y_current, Z_current) = 4;
                 released(index,:) = [X_current, Y_current, Z_current];
                 index = index +1;
            end
           
  end
   welt (X_current, Y_current, Z_current) = 3;
   c = released;
   b = welt;
Private Nachricht senden Benutzer-Profile anzeigen
 
Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 26.07.2013, 11:23     Titel:
  Antworten mit Zitat      
guguli hat Folgendes geschrieben:
Ich hab das wie folgt geändert. Ich kriege aber nur den letzten wert, der berechnet wird, und nicht alle werte. ich soll eigentlich diese bekommen:
1 2 1, 1 3 1, 1 4 1, 1 5 1 , 1 6 1
ich krieg aber nur 1 6 1


Für c? Oder an welcher Stelle genau?

Wenn ich deinen Code durchlaufen lasse, ergibt sich für c eine 5x3-Matrix mit genau den Werten, die du oben aufgeführt hast, nur dass die Kommata Semikolons sind (sonst wärs ja keine Matrix, sondern ein Vektor) -> oder willst du einen Zeilenvektor?
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
guguli
Themenstarter

Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 04.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.07.2013, 11:39     Titel:
  Antworten mit Zitat      
Ja für c.
Also ich muss noch sagen dass ich diesen code in Simulink in einem matlab fcn block geschrieben habe. und das ergebnis habe ich dann mit to workspace block an matlab workspace weiter gegeben.
Vllt. lieg das dadran????
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

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.