Verfasst am: 02.12.2010, 16:10
Titel: fortlaufende indizes zusammen mit rücklaufender zähler
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.
% 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
% 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}; % ???
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??´?
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:
% 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...
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:
% 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);
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
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.