Verfasst am: 06.02.2008, 10:42
Titel: Legende in for Schleife
Hallo mit
n=10;
liste=cell(n,1);
x=rand(n,n);
y=rand(n,n);
for i=1:n
liste{i}=['var\_' int2str(i)];
plot ( x(:,i),y(:,i));
hold all
end
legend(liste);
kann man machen, dass die Legende nicht von der Schlaufe überschrieben wird.
Ich habe folgendes Problem:
Ich habe einen Vektor mit den Werten 'Matrix' und ein Array mit den Titeln 'titel'
for i=1:length(Spaltenpositionsvektor)
j=Spaltenpositionsvektor(i)+1;
subplot(2,1,1)
semilogx(Matrix(:,1),Matrix(:,Spaltenpositionsvektor(i,1)))
hold all;
subplot(2,1,2)
semilogx(Matrix(:,1),Matrix(:,j))
hold all;
i=i+1;
In die Legende soll jeweils titel{i} dieser enthält den Titel des i ten Graphen.
Die jeweils erstellte Legende soll nur ergänzt werden. Das Problem sollte ähnlich wie oben mit liste{i}=['var\_' int2str(i)] gelöst werden können nur möchte ich hier eben der Titel aus titel{i} liste{i}=[titel{i}] funktioniert leider nicht!
Ich vermute mal, dass deine Einträge in "titel" keine Strings sind - dann macht nämlich auch die Fehlermeldung sinn, dass Matlab für die Legende ein cell-array mit strings haben will.
Das müsstest du nochmal überprüfen.
Ach so machst du das...
In der Hilfe zu uigetfile(...,'multiselect','on') steht aber, dass filenames breits ein cell-array mit strings ist. Du brauchst es also nicht mehr umschreiben in titel, sondern kannst es gleich für die Legende verwenden.
Btw: Mit titel=[] initialisierst du eine Matrix, aber kein Cell-Array - glaube ich
_________________
filenames = uigetfile('*.txt', 'Dateien zum Auswerten auswählen','Multiselect','on');
for k=1:size(filenames,2)
fid=fopen(filenames{k},'r');
if fid == -1
warning('Datei nicht gefunden') ;
end;
vec = textscan(fid,'%s',5,'delimiter','\n'); %zuerst 5 Zeilen Text
i=0;
vec = textscan(fid,'%n',3);% auf der 6 Zeile 3 numerische Werte einlesen
while length(vec{1}) ~= 0 %solange die Länge des Vektors vec nicht null ist also noch nicht am Ende des Textfiles
i=i+1;
ErgebnisVektor(i, = [vec{1}(2) vec{1}(3)]; % in ErgebnisVektor auf i'ten Zeile den zweiten und dritten Wert des eingelesenen Vektors vec schreiben
vec = textscan(fid,'%n',3); %auf nächster Zeile die 3 numerischen Werte einlesen
end
fclose(fid);
ErgebnisCell{k} = ErgebnisVektor;
titel{k}=filenames;
%titel{k+1}=filenames;
Matrix(:,2*k)=ErgebnisVektor(:,1);
Matrix(:,2*k+1)=ErgebnisVektor(:,2);
end
figure(1);
for i=1:length(titel)
subplot(2,1,1)
semilogx(Matrix(:,1),Matrix(:,2*i))
hold all;
subplot(2,1,2)
semilogx(Matrix(:,1),Matrix(:,2*i+1))
hold all;
i=i+1;
end
filenames = uigetfile('*.txt', 'Dateien zum Auswerten auswählen','Multiselect','on');
for k=1:size(filenames,2)
fid=fopen(filenames{k},'r');
if fid == -1 warning('Datei nicht gefunden') ;
end;
vec = textscan(fid,'%s',5,'delimiter','\n'); %zuerst 5 Zeilen Text
i=0;
vec = textscan(fid,'%n',3);% auf der 6 Zeile 3 numerische Werte einlesen whilelength(vec{1}) ~= 0 %solange die Länge des Vektors vec nicht null ist also noch nicht am Ende des Textfiles
i=i+1;
ErgebnisVektor(i,:) = [vec{1}(2) vec{1}(3)]; % in ErgebnisVektor auf i'ten Zeile den zweiten und dritten Wert des eingelesenen Vektors vec schreiben
vec = textscan(fid,'%n',3); %auf nächster Zeile die 3 numerischen Werte einlesen
end fclose(fid);
ErgebnisCell{k} = ErgebnisVektor;
Matrix(:,2*k)=ErgebnisVektor(:,1);
Matrix(:,2*k+1)=ErgebnisVektor(:,2);
end
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.