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

Ergebnisvektoren zu einem Vektor zusammenfassen

 

maleme92
Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 01.12.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.12.2015, 14:26     Titel: Ergebnisvektoren zu einem Vektor zusammenfassen
  Antworten mit Zitat      
Hey,
ich habe folgendes Problem:

Ich erzeuge in einer for-Schleife Ergebnis-Vektoren, die sich mit jedem Schritt um eine Zeile verkürzen, da ich für den jeweils nächsten Schritt, das erste ERgebnis benötige. Ist es möglich, diese Vektoren zu einem großen Spaltenvektor zusammen zu fassen?

Code:


function neugrad(X,Y,Z)

for c=1:3
if c==1

    x=X
    y=Y
    z=Z

else

x=x
y=y
z=eta_mcons
end

n=length(x)
for i=1:n-1
    deltax(i)=x(i+1)-x(i);
    deltay(i)=y(i+1)-y(i);
    deltaz(i)=z(i+1)-z(i);
    m(i)=deltaz(i)/(sqrt(deltax(i).^2+deltay(i).^2));
end


% Bestimmung der neuen Koordinaten

for j=2:n;
eta_mcons(j)=m(j-1).*deltay(j-1)+z(j-1);
end
eta_mcons;


for i=1:n;
   x(i);
end

for j=2:n;
   y(j);
end

x(n)=[];
y(1)=[];
eta_mcons(1)=[];
end
end

 


Ich übergebe der Funktion jeweils 26x1-X,Y,Z Vektoren. Wie ihr seht, wird in jedem Schritt der Vektor um 1 verkürtzt.

Ist es möglich, nachher ale x- Vektoren in einen großen Spaltenvektor zu schreiben??
Analog dann auch das Gleiche für die anderen Koordinaten
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: 07.12.2015, 15:12     Titel: Re: Ergebnisvektoren zu einem Vektor zusammenfassen
  Antworten mit Zitat      
Hallo maleme92,

Ich sehe nicht den Zusammenhang zwishen der Frage und dem Code. Kannst Du den wesentlichen Teil des Codes posten?

Der Code ist sowieso mehrfach verwirrend:
Code:
function neugrad(X,Y,Z)

for c=1:3
  if c==1
    x=X
    y=Y
    z=Z
  else
    x=x
    y=y
    z=eta_mcons
end

"x=x" ist sinnfrei. In dieser Schleife wird x,y,z direkt überschrieben. Was ist das Ziel dabei?

Code:
n=length(x)
for i=1:n-1
    deltax(i)=x(i+1)-x(i);
    deltay(i)=y(i+1)-y(i);
    deltaz(i)=z(i+1)-z(i);
    m(i)=deltaz(i)/(sqrt(deltax(i).^2+deltay(i).^2));
end

% Besser:
deltax = diff(x);
deltay = diff(y);
deltaz = diff(z);

Das ist wieder sinnfrei:
Code:
for i=1:n;
   x(i);
end

for j=2:n;
   y(j);
end


Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
maleme92
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 01.12.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.12.2015, 15:21     Titel:
  Antworten mit Zitat      
Okay,
sorry...
Dann denk dir die Fehler einfach weg Wink

Aber wie schon gesagt, wird in jeder Berechnung bspw. ein x berechnet, welches für den nächsten Berechnungsschritt benötigt wird.

Trotzdem möchte ich es nicht überschreiben, sondern in einen Ergebnisvektor packen, der quasi alle x-Vektoren untereinander in einen großen Vektor schreibt.
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: 08.12.2015, 10:07     Titel:
  Antworten mit Zitat      
Hallo maleme92,

Zitat:
Aber wie schon gesagt, wird in jeder Berechnung bspw. ein x berechnet, welches für den nächsten Berechnungsschritt benötigt wird.

Da die Schleife "for c=1:3" nichts sinnvolles ausführt, kann ich nicht erraten, was sie tun soll. Deshalb ist der gesame folgende Code auch nicht mehr sinnvoll.

Bitte poste einen bereinigten Code. Es ist schwierig in einem zum Teil sinnfreien Code die Zeile zu erraten, in der "ein x berechnet" wird.

Im Allgemeinen speichert man aber Ergebnisse in einem Vektor ab, indem man sie in einem Vektor abspeichert:
Code:
x = zeros(1, 10);  % Pre-allocation
for k = 1:10
  x(k) = rand;  % Hier die Berechnung statt RAND
end

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
maleme92
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 01.12.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.12.2015, 10:42     Titel:
  Antworten mit Zitat      
Habe im Moment noch nicht
Code:

deltax = diff(x);
deltay = diff(y);
deltaz = diff(z);
 

geschrieben, da Matlab dort etwas anderes berechnet, als in meiner Schreibweise.

Die for-Schleife ist dafür da, damit beim ersten Schritt die Eingabeparamter X,Y,Z auf x,y,z übergeben werden und um zu steuern, wie viele Berechnungen ich machen möchte.
Wie schon gesagt, wird in jeder Berechnung der x-Vektor um die n-te Stelle verkürzt. Der y-Vektor um die erste Stelle und der "eta_mcons" auch um die erste Stelle, wobei dieser im nächsten Berechnungsschritt die neue z-Koordinate ist.

Dies ergibt in jedem Berechnungsschritt n-1 "Punktepaare"(x,y,z), mit denen ich am Ende je einen großen Ergebnisvektor für die x-Korrdinate, y-koordinate und z-Koordinate erstellen will. Wenn dies funktioniert, sollten alle Vektoren gleich lang sein, sodass man diese plotten kann.

Code:


function neugrad_matrix(X,Y,Z)
close all

%% for-Schleife m=const

 for c=1:3

 if c==1

    x=X
    y=Y
    z=Z

 else
z=eta_mcons
 end
n=length(x)
for i=1:n-1
    deltax(i)=x(i+1)-x(i);
    deltay(i)=y(i+1)-y(i);
    deltaz(i)=z(i+1)-z(i);
    m(i)=deltaz(i)/(sqrt(deltax(i).^2+deltay(i).^2));
end

% Bestimmung der neuen Koordinaten

for j=2:n;
eta_mcons(j)=m(j-1).*deltay(j-1)+z(j-1);
end


x(n)=[];
y(1)=[];
eta_mcons(1)=[];

end
 


Danke für deine Geduld mit meinen leider nur Anfängerkenntnissen Wink

p.s.: Wirklich berechnet werden die x- und y-Koordinaten ja nicht. Sie werden "verkürzt". Berechnet wird das "eta_mcons".
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.