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

fortlaufende indizes zusammen mit rücklaufender zähler

 

Vanillebacke
Forum-Century

Forum-Century


Beiträge: 167
Anmeldedatum: 06.05.09
Wohnort: Hamburg
Version: R2014a
     Beitrag Verfasst am: 02.12.2010, 16:10     Titel: fortlaufende indizes zusammen mit rücklaufender zähler
  Antworten mit Zitat      
Moin ,

ich habe eine unterschiedliche anzahl von graphen maximal 96 in einem axes und greife mithilfe AxesChildren auf die x-y daten zu. Diese will ich in eine Tabelle schreiben. Wenn ich diese manuell mache ohne einer Schleife funktioniert das. siehe Code 1. Praktischer wäre es, wenn ich dies in eine Schleife zusammenpacke. Jedoch fehlt mir hier die richtige lösung, einen ansatz ist im code 2 gezeigt...
als zusätzliches problem stellte sich heraus, dass die reihenfolge der y-werte vertauscht wird (siehe code 1). aus diesem grund greift der erste y wert auf den letzten ywert im axesChildren zu.

für jede hilfe wäre ich dankbar

beste grüße
vb

Code:

AxesChildren=get(handles.axes1,'Children');
xAxes=get(AxesChildren,'XData');
yAxes=get(AxesChildren,'YData');

% Convert Cells to Matrix contents with transponation

xAxes=xAxes{1,1}'; % one x-Values necessary because one x-Ordinate

yAxes1=yAxes{4,1}'; % first y-Value
yAxes2=yAxes{3,1}'; % second y-Value
yAxes3=yAxes{2,1}'; % third y-Value
 yAxes4=yAxes{1,1}'; % fourth y-Value
 dataplot=horzcat(xAxes,yAxes1,yAxes2,yAxes3,yAxes4);

xneu=dataplot(:,1) % x values from plot
yneu=dataplot(:,2:end) % y values from plot

 


Code:

AxesChildren=get(handles.axes1,'Children');
xAxes=get(AxesChildren,'XData');
yAxes=get(AxesChildren,'YData');

% Convert Cells to Matrix contents with transponation
for I =1:4
    try
xAxes=xAxes{1,1}'; % one x-Values necessary because one x-Ordinate
yAxes(I)=yAxes{I,1}; % nicht richtig

dataplot=horzcat(xAxes,yAxes(I) %Data-Matrix

    end
end

xneu=dataplot(:,1) % x values from plot
yneu=dataplot(:,2:end) % y values from plot

 
Private Nachricht senden Benutzer-Profile anzeigen


_Peter_

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.12.2010, 16:20     Titel:
  Antworten mit Zitat      
Eine for-Schleife rückwärtszählen lassen kannst du so:

Code:

for i = 4 : -1 : 1
   disp(i)
end
 
 
_Peter_

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.12.2010, 16:22     Titel:
  Antworten mit Zitat      
ok... habe dich wohl etwas missverstanden stelle ich gerade fest.

was hälst du davon?

Code:

AxesChildren=get(handles.axes1,'Children');
xAxes=get(AxesChildren,'XData');
yAxes=get(AxesChildren,'YData');

% Convert Cells to Matrix contents with transponation
value = 4
for I =1: value
    try
xAxes=xAxes{1,1}'; % one x-Values necessary because one x-Ordinate
yAxes(I)=yAxes{(value+1-I),1}; % ???

dataplot=horzcat(xAxes,yAxes(I) %Data-Matrix

    end
end

xneu=dataplot(:,1) % x values from plot
yneu=dataplot(:,2:end) % y values from plot
 
 
Vanillebacke
Themenstarter

Forum-Century

Forum-Century


Beiträge: 167
Anmeldedatum: 06.05.09
Wohnort: Hamburg
Version: R2014a
     Beitrag Verfasst am: 02.12.2010, 16:33     Titel:
  Antworten mit Zitat      
funktioniert noch nicht ganz.

folgende fehlermeldung erscheint:

undefined function or variable "dataplot".

error in....
xneu=dataplot(:,1);


hmm denke aber der ansatz ist richtig....
Private Nachricht senden Benutzer-Profile anzeigen
 
Vanillebacke
Themenstarter

Forum-Century

Forum-Century


Beiträge: 167
Anmeldedatum: 06.05.09
Wohnort: Hamburg
Version: R2014a
     Beitrag Verfasst am: 02.12.2010, 16:42     Titel:
  Antworten mit Zitat      
glaub soi geht das doch genrell nicht.

will ja nicht
yAxes(1)... yAxes(4) erreichen, sondern
yAxes1....yAxes4....!!!!
da liegt glaub ich der fehler..... wie kann ich den korrigieren oder liege ich falsch??´?

danke
Private Nachricht senden Benutzer-Profile anzeigen
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 03.12.2010, 01:03     Titel:
  Antworten mit Zitat      
Hallo,

Die Erstellung von yAxes(1), yAxes(2)... anstelle von yAxes1, yAxes2 ... ist schon sehr gut und macht die Weiterverarbeitung der Daten erheblich einfacher (da eben alle Werte in einem Vektor). Weiterhin müssen so nicht mühselig die Variablennamen mittels "eval" oder anderer unschönen Befehle erzeugt werden.

Naja ich versuch mal mein Glück, auch wenn ich nicht genau weiß wie deine CellArrays aussehen:

Code:

AxesChildren=get(handles.axes1,'Children');
xAxes=get(AxesChildren,'XData');
yAxes=get(AxesChildren,'YData');

% Convert Cells to Matrix contents with transponation

xAxes=xAxes{1,1}';

% all_aAxes = zeros(size(yAxes,1),4); preallocating, jedoch bin ich mir nicht sicher wegen den Cell-Dimensionen (Zeilen- oder Spaltenvektor), deshalb auskommentiert
k = 0;
for n = 4:-1:1
    k = k+1;
    all_yAxes(:,k) = yAxes{n,1}';
end

dataplot = [xAxes  all_yAxes];
 
xneu=dataplot(:,1) % x values from plot
yneu=dataplot(:,2:end) % y values from plot
 


Wenn der Code nicht dem entsprichst was du möchtest, so gib bitte mal die Dimensionen der Cells (xAxes,yAxes) an.

Ausserdem verstehe ich nicht warum du den Vektor "dataplot" erstellst, nur um dann daraus wiederum nur Variablen zu erzeugen (z.B xneu) die es schon 1 zu 1 davor im Code gibt (xAxes)? Vielleicht habe ich aber auch den Code falsch interpretiert...

MFG

Sco
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: 03.12.2010, 01:48     Titel: Re: fortlaufende indizes zusammen mit rücklaufender zähler
  Antworten mit Zitat      
Hallo Vanillebacke,

Wie wäre es mit:
Code:

AxesChildren=get(handles.axes1,'Children');
xAxes=get(AxesChildren,'XData');
yAxes=get(AxesChildren,'YData');

dataplot = transpose(cat(1, xAxes{1}, yAxes{4:-1:1}));
 

Ich blicke bei den Orientierungen der Vektoren nicht durch, eventuell muss es "cat(2, ..." heißen.

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

Forum-Century

Forum-Century


Beiträge: 167
Anmeldedatum: 06.05.09
Wohnort: Hamburg
Version: R2014a
     Beitrag Verfasst am: 03.12.2010, 10:46     Titel:
  Antworten mit Zitat      
Danke für eure Hilfe. Haben es aber noch einfacher gelöst.

Habe die entstehende Zellen, die aus dem axesChildren entstehen direkt in eine Matrix mittels cell2mat umgewandelt. Daher brauche ich nicht mehr auf die einzelnen Cellen Indizes eingehen und habe die Daten diekt in einer matrix:



Code:

AxesChildren=get(handles.axes1,'Children');
xAxes=get(AxesChildren,'XData');
yAxes=get(AxesChildren,'YData');

% Convert Cells to Matrix contents with transponation
xAxes=xAxes{1,1}'; % one x-Values necessary because one x-Ordinate
yAxes=cell2mat(yAxes);
yAxes=yAxes';
yAxes=yAxes(:,end:-1:1);
dataplot=horzcat(xAxes,yAxes);

 


beste grüße vb
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.