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

plot Datentyp anpassen

 

jonnes
Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 10.11.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2010, 15:02     Titel: plot Datentyp anpassen
  Antworten mit Zitat      
Hallo,

ich möchte mittels plot-Befehl das Datum (x-Achse) über die Temperatur (y-Achse) darstellen. Ich lese aus einer Excel-Datei die entsprechenden Werte aus und übergebe diese jeweils einer Variable.
Die Variable in der die Daten stehen ist vom Typ cell. Die Werte für die Temperatur sind vom Typ double.
Wenn ich den plot-Befehl ausführen möchte, erhalte ich die Fehlermeldung, dass eine Umwandlung von cell in double nicht möglich sei.
Wie kann ich eine der beiden Variablen umformen, dass ich trotzdem mein Diagramm ploten kann.

Code:

function plot_Callback(hObject, eventdata, handles)
A=get(handles.Zeit,('String'));
[num,datum,text2]=xlsread(A); % num Temp Werte, %Datum die Zeit
set(plot(datum,num),axes1)

 


Danke für eure Hilfe.
Grüße
jonnes
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: 18.12.2010, 17:32     Titel: Re: plot Datentyp anpassen
  Antworten mit Zitat      
Hallo jonnes,

Du müsstest noch ein Beispiel mit echten Daten zeigen, damit man eine Lösung finden kann. Wenn das Datum lautet:
"{'Ein Tag nach Weihnachten, als meine Oma noch in Limburg wohnte, mittags'}", dann wird das nicht so einfach werden ;-)

Im allgemeinen kann aber DATENUM ein Datum in eine Zahl umwandeln. Wahrscheinlich ist dann auch der Befehl DATETICK für Dich interessant.

Code:

[num,datum,text2]=xlsread(A);
set(plot(datum,num),axes1)
 

Das SET-Kommando wird hier gleich den nächsten Fehler erzeugen. Siehe "help set". Was soll es bewirken?!
Ich rate mal, Du möchtest etwas wie:
Code:

  set(axes1, 'nextplot', 'add');  % Falls nicht worher geschehen
  plot(datum, num, 'Parent', axes1)
 

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 10.11.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.12.2010, 20:20     Titel: plot Datentyp anpassen
  Antworten mit Zitat      
hallo,
danke für schnelle Antwort
ich möchte einfach plot-Befehl das Datum (x-Achse) über die Temperatur (y-Achse) darstellen.
24.11.2008 14:25:41 -0.000402
24.11.2008 14:25:42 -0.000402
24.11.2008 14:25:43 -0.000402
24.11.2008 14:25:44 -0.000402
24.11.2008 14:25:45 -0.000402
24.11.2008 14:25:46 -0.000502
vielen dank

2.xls
 Beschreibung:

Download
 Dateiname:  2.xls
 Dateigröße:  3.01 MB
 Heruntergeladen:  1467 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.12.2010, 21:02     Titel:
  Antworten mit Zitat      
Hallo,

wenn du das einfach plotten willst, dann gib doch einfach sowas ein Wink

Code:
[num, txt] = xlsread('2.xls');
data = str2double(txt(:, 2:3));
dates = datenum(txt(:,1), 'dd.mm.yyyy HH:MM:SS');
plot(dates, data(:,1))
datetick


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
jonnes
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 10.11.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.12.2010, 13:42     Titel: plot Datentyp anpassen
  Antworten mit Zitat      
Tausend Dank Harald,
danke hat funktioniert,aber da ich mehrer datein habe, jeden liegt ein Messung vor,möchte ich das ganze gleichzeitig ploten.jeden Tag ist ein Messung in ein xls datei.
Code:
A=get(handles.Zeit,('String'))
[num,txt] = xlsread(A);
data = str2double(txt(:,2:3));
dates = datenum(txt(:,1), 'dd.mm.yyyy HH:MM:SS');
plot(dates(A,1),data(A:,2))
datetick


hier sind nur 1 Datei xls angehängt.

wie mache das am besten
Vielen Dank

20092010.xls
 Beschreibung:

Download
 Dateiname:  20092010.xls
 Dateigröße:  5.24 MB
 Heruntergeladen:  597 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.12.2010, 14:39     Titel:
  Antworten mit Zitat      
Hallo,

mir wird leider nicht ganz klar, wo das Problem liegt. Wenn es ist, dass die Plots überschrieben werden, dann gib beim ersten Mal
Code:

an.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
jonnes
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 10.11.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.12.2010, 20:18     Titel: plot Datentyp anpassen
  Antworten mit Zitat      
hi,

meine Proplem ist mehere Dateien gleichzeitig ploten

ich habe für jeden Tag ein Messung (jedentag ist ein datei z.B 10.10.2010)
dann ,wenn ich einfach in mein Gui 10.10.2010.xls eintipen wird meine kurve gezeiget.
da die Dateien name 10.10.2010 liegt in meine Ordner.


ich will jetzt meine ganze mehrere Dateien, die in meine Ordner gleichzeig ploten???
meine Datein sind mit Zeit gennant. also Tem zu Zeit jeden datei ist ein kurzezeitmessung.

ich werde sehr dankbar ,wenn Jemend ein Idee hat
dank
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.12.2010, 14:48     Titel:
  Antworten mit Zitat      
Hallo,

spontan so:
Code:
liste = dir('*.xls');
for I=1:length(liste)
% Import und Verarbeitung mit liste(I).name
hold on
end


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
jonnes
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 10.11.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.12.2010, 05:56     Titel: plot Datentyp anpassen
  Antworten mit Zitat      
hallo Harald,
bitte verzeih mir , ich bin anfinger Embarassed
es hat leider nicht geklapt, da ich muss jedes mal die Datei Name eintippen im GUI, ich will aber die Dateien auf einmal mit ein klick ploten,
und zwar: als peispiel
den 10.02.2009 bis 25.02.2009 B.Z( Die DateiName 10.02.2009.xls bis Dateiname 25.02.2009.xls) ploten möchte ,damit siehe wie hoch waren die Temperaturzahlen in diese Tagen.oder im ganz Jahr als beispiel.
wie gesagt die Dateien sind sortiert auf DatumDateienNamen
und Pro Tag ein Datei.
10.02.2009.xls
11.02.2009.xls
12.02.2009.xls
.....
....
.wie kann ich bestimmte Zeitraum von - bis auf ein mal ploten

Vielen dank für die Hilfe.

Code:
% --- Executes on button press in plot.
function plot_Callback(hObject, eventdata, handles)
% hObject    handle to plot (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)


A=get(handles.Zeit,('String'));
liste = dir('*.xls');
for I=1:length(liste)
% Import und Verarbeitung mit liste(I).name
hold on

[num, txt] = xlsread(A);
data = str2double(txt(:,2));
dates = datenum(txt(:,1), 'dd.mm.yyyy HH:MM:SS');
plot(dates,data(:,1))
datetick
 end
xlabel('Datum');
ylabel('Tem')
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.12.2010, 09:55     Titel:
  Antworten mit Zitat      
Hallo,

dann müsste "hold on" an sich ausreichen. Du müsstest schon dazu schreiben, inwiefern das dann nicht funktioniert.

Überleg dir zudem die Verwendung von uigetfile oder uigetdir, das dürfte deine GUI deutlich benutzerfreundlicher machen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
jonnes
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 10.11.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.12.2010, 04:32     Titel:
  Antworten mit Zitat      
Hallo,
ich bin leider ein absoluter MatLab-Neuling und stehe vor einem für mich im Moment unlösbaren Problem. mit diese code kann ich meine .xls dataeien abrufen.
liste = dir(fullfile(uigetdir('','liste'),'*.xls'));

aber nicht ploten kann, die datein sind in ordner sortiert auf datum:10.02.2009.xls
11.02.2009.xls
12.02.2009.xls
.....
ich will im Gui Zeitbereich abgeben z.b von 12.02.2009 bis 16.02.2009 ,dann muss diese dauer den entsprechenden Graph gezeigt.
hier noch meine code :
Code:

% --- Executes on button press in plot.
function plot_Callback(hObject, eventdata, handles)
% hObject    handle to plot (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
A=get(handles.Zeit,('String'));

[status liste ]= system('dir/s/b*.xls')
[num, txt] = xlsread('A.xls');
data = str2double(txt(:,2));
dates = datenum(txt(:,1), 'dd.mm.yyyy HH:MM:SS');
plot(dates,data(:,1))
datetick
hold on
xlabel('Datum');
 




ich wäre sehr dankbar für jeder Hilfe.


edit by denny: Hallo jonas, kannst du bitte dein Code richtig zwischen den Klammer [ code ] [ /code ] einbetten. Falls was schief läuft kannst du dein Beitrag auch nachträglich editieren. Danke!
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: 23.12.2010, 15:16     Titel:
  Antworten mit Zitat      
Hallo jonnes,

Es wäre viel leichter, Dir zu helfen, wenn Du mit den nötigen Details beschreiben würdest, was nicht funktioniert. Läuft das Programm, das Du gepostet hast?
Zitat:
aber nicht ploten kann, ...

Das ist nicht genau genug, um Dir wirklich helfen zu können.

Bitte poste Code innerhalb einer "Code-Umgebung":
[ c o d e ] ... [ / c o d e ] (ohne Leerzeichen!)

Dies liefert bestimmt nicht, was Du brauchst:
Code:
[status liste ]= system('dir/s/b*.xls')

Ausserdem hast Du "liste" doch bereits vorher definiert:
Code:
liste = dir(fullfile(uigetdir('','liste'),'*.xls'));

Und ganz allgemein ist anzuraten ein Problem nach dem anderen zu lösen. Also zuerst die Files einlesen, bis es funktioniert. Danach kannst Du Dich auf das Plotten konzentrieren - und in den Fragen den Teil zum Einlesen der Daten weglassen, damit die Leser weniger abgelenkt order verwirrt werden.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 10.11.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.12.2010, 00:51     Titel:
  Antworten mit Zitat      
Hallo Jan ,
ich habe viele .xls Dateien,jeden Tag liegt ein datei vor ,und Sind mit Datum genanant 20.02.2010,21.02.2010,usw .1- Spalte Zeit in Form 'dd.mm.yyyy HH:MM:SS' und 2-Spalte Tem.
ich kann jede Datei mit dem code ploten.das funktionert wunderbar.
Code:
% --- Executes on button press in plot.
function plot_Callback(hObject, eventdata, handles)
% hObject    handle to plot (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
A=get(handles.Zeit,('String'));
[num, txt] = xlsread(A);
data = str2double(txt(:,2));
dates = datenum(txt(:,1), 'dd.mm.yyyy HH:MM:SS');
plot(dates,data(:,1))
datetick
xlabel('Datum');
ylabel('Tem')
ich habe jetzt ein Weiterknopf im Gui, mit dem möchte ich die nächste Datei Automatisch ploten.
als beispiel plot 20.02.2010 ,und dann weiterknopf Drüken ,dann muss die nächste Datei das wäre dann 21.02.2010 auch dazu gezeichnet usw......

ich wäre sehr dankbar,wenn Jemend mir den Code schreiben kann.[/code]

24.11.2008.xls
 Beschreibung:
beispiel Datei

Download
 Dateiname:  24.11.2008.xls
 Dateigröße:  3.01 MB
 Heruntergeladen:  538 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Marco H.
Forum-Guru

Forum-Guru


Beiträge: 404
Anmeldedatum: 12.11.10
Wohnort: Dortmund
Version: 2010a/2012b
     Beitrag Verfasst am: 24.12.2010, 05:16     Titel:
  Antworten mit Zitat      
Sersen,
da heute Weihneachten ist versuch mal meine angehängten sachen. Anstatt einem pb ist ne Listbox eingefügt womit du dann bei mehreren Dateien vor und zurück schalten kannst. Natürlich geht nicht alles ist halt nur ein Beispiel...einfach mal Testen...

Viel Spass damit und frohe Weihnachten

MfG Marco

Edit: ja ich weiß die waitbar ist ein bisl blöd integriert...

testImportExcel.m
 Beschreibung:

Download
 Dateiname:  testImportExcel.m
 Dateigröße:  5.05 KB
 Heruntergeladen:  427 mal
testImportExcel.fig
 Beschreibung:

Download
 Dateiname:  testImportExcel.fig
 Dateigröße:  4.33 KB
 Heruntergeladen:  422 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
jonnes
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 10.11.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.12.2010, 05:24     Titel:
  Antworten mit Zitat      
hallo Marco,
ich danke dir Sehr,das war das beste Weihnachten G.alles wunderbar funktioniert, alerdings , ich möchte Z.b 10 Dateien(die Dateien sind im Listbox sortiert) auf einmal ploten ,wie kann ich diese dateien auf einmal markieren bzw ploten lassen. oder die ganze dateien auf einmal.
ich habe Versucht mit ein Weiterbuton ,aber leider hat ergendwie nicht funktioniert ,und hier ist ein Beispiel cod für Weiterbuton oder Interwalzeitbuton.
Code:
% --- Executes during object creation, after setting all properties.
function ZEITINTERVALL_CreateFcn(hObject, eventdata, handles)
% hObject    handle to ZEITINTERVALL (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');


end


% --- Executes on button press in WEITER.
function WEITER_Callback(hObject, eventdata, handles)
% hObject    handle to WEITER (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

global A ;      %Messdaten der Sensoren

%Zeit/Datum-Variablen werden aus dem Workspace geholt
DT = evalin('base','rowheaders');
%Datum, Zeit in serieller darstellung
DT_seriell=datenum(DT,'dd.mm.yyyy HH:MM:SS');
xData=DT_seriell;


minT=min(xData);
%Zeitzähler + T
T=str2double(get(handles.text2,'String'));
maxT=get(handles.ENDZEIT,'String');
maxT=datenum(maxT,'dd.mm.yyyy HH:MM:SS');
maxT=addtodate(maxT,T,'hour');



set(handles.ENDZEIT,'string',num2str(datestr(maxT,'dd.mm.yyyy HH:MM:SS')));

D1=plot(handles.axes1,xData,A);

set(gca,'XTick',xData);
datetick(gca,'x',15);
axis([minT,maxT 0 2000]);
grid on;
%Achsenbeschriftung
ylabel (handles.axes1, 'FTU [-]');
xlabel (handles.axes1, 'Zeit');
zoomAdaptiveDateTicks('on');
end
 

ich wäre sehr dankbar für jede Hilfe
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.