PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mit matlab messdaten graphisch darstellen???


Gast
2004-01-29, 17:20:55
hallo,

also ich wollt mal eben ganz simpel mit matlab die messdaten aus einem versuch darstellen.
mit exel klapp´s. das gefällt mir aber nicht.
drum wollt ich es mit matlab machen. früher konnt ich das mal und weiß das es echt einfach is. aber jetzt komm ich auf keinen grünen zweig :-/

also, ich hab eine datei mit den messdaten und brauch halt einfach den graphen...wie geht´s.
kann mir mal einer auf die sprünge helfen.
hier mein kläglicher versuch:

load test.dat
[M;N]=size(test);
h=1
for i=1:m;
x=0:h:m;
y(i)=test(x)
end
plot (x,y)


so...hoffe einer kann den humbug gerade biegen :-)

Gast
2004-01-29, 19:59:25
hey, kein fachman hier???

greenvirus
2004-01-29, 20:08:39
wir hatten einige Lin. Alg. übungen mit Matlab, aber nur einfache rechnungen.


kannst dus denn nicht mit Mathematika machen? ich glaube dann gäbe es einige leute mehr die dir helfen könnten. ist halt mehr verbreitet.



gruss

Gast
2004-01-29, 20:14:19
das hab ich nicht. matlab is halt eigentlich extrem praktisch und einfach anzupassen. außerdem braucht mein 1800xp mit open office 5 minuten die messkurve zu erstellen. der p1 an der uni mit office nur 2 sec. ich hoffe mit matlab geht´s schneller :-)

Gast
2004-01-30, 09:51:27
hmmmmmmm....jungs, ich bin verwundert. das erste mal seit jahren wo mir hier keine helfen kann! naja, dann fang ich heut abend an alles mit office zu machen :-(

Matrix316
2004-01-30, 11:27:06
Ouuu das ist schon länger her, aber:


S = LOAD(...) returns the contents of FILENAME in variable S. If
FILENAME is a MAT file, S is a struct containing fields matching the
variables retrieved. If FILENAME is an ASCII file, S is a double
precision array.

Du musst ja nur versuchen die x Werte und die y Werte in jeweils einen Array zu bringen. (mit str2num kannste ja strings in Zahlen umwandeln) Dann geht auch plot(x,y).

Mit array1(1:Anzahl)=zeros kannste einen Vektor vorbereiten mit der Anzahl der Werte.

Dann musste nur die jeweiligen Werte aus dem Ursprungsvektor da rein kopieren (man kann in einem Schritt alle X oder Y Werte aus einem Array in einen anderen kopieren, oder den Ursprungsarray kopieren und dann einmal die X und dann die Y Werte löschen).

Hier hab ich noch einen Quelltext gefunden, vielleicht hilft er dir:


%...........Einlesen und Plotten von Messdaten..........
%*******************************************************

help PP_PLOT1.M

close all;
clear all;

%Testvariable
test=1;


%eingabe des Filenamens
FILE1=input('Bitte Name und Pfad des einzulesenden Files eingeben (z.b. x:\\\\test_2.1) : ','s');
%einlesen des Files
FID=fopen(FILE1,'r');

if FID==-1
error('Fehler bei Lesen von File','msg')

else
disp(sprintf(' '))
disp(sprintf('****** File_ID = %d', FID))
disp(sprintf('****** File OK for Display'))
disp(sprintf(' '))
end

%Einlesen der Startzeit in Vektor A
A=fscanf(FID,'%s%',[1,1]);
%Einlesen der Endzeit in Vektor B
B=fscanf(FID,'%s%',[1,2]);
%Einlesen der Anzahl der Daten pro Kanal
n=fscanf(FID,'%s%',[1,3]);
%Umwandlung von String in Zahl
samp=str2num(n);
%Anzahl der Kanäle
chan=input('Bitte Anzahl der Kanäle eingeben (hier 2!): ');
%Einlesen der Werte in Hilfsvektor D1
D1=fscanf(FID,'%e',[1,inf]);
%X-Achse-Skalierung
p=0 : (samp-1);

%Kopieren der Werte in Endvektor D
j=1;
for i=1:2*samp
if mod(i,2)~=0
D(1,j)=D1(1,i); %Zeile 1 = Kanal 0
j=j+1;
end
end

j=1;
for i=1:2*samp
if mod(i,2)==0
D(2,j)=D1(1,i); %Zeile 2 = Kanal 1
j=j+1;
end
end

st=fclose (FID);
count= samp*chan;
startime=num2str(A);
endtime=num2str(B);

%Statistikausgabe
disp(sprintf('StartTime = %s', startime))
%disp(startime)
disp(sprintf('EndTime = %s', endtime))
%disp(endtime)
disp(sprintf(' '))
disp(sprintf('Sample Sets Specified = %d',samp))
disp(sprintf('Samples Read = %d',count))
disp(sprintf('Status File Close (OK=0) = %d', st))
disp(sprintf(' '))
disp(sprintf(' '))
%st=1;
%Fehlermeldung wenn nicht richtig eingelesen
if st==1
error('File was not closed correctly','MSG')
end



%Testausdruck der Liste
if test==1
%Drucken der Liste
for i=1:samp
disp(sprintf('Chan No.1 SAMPLE No: %d ===> %d ',i, D(1,i)))
end
for i=1:samp
disp(sprintf('Chan No.2 SAMPLE No: %d ===> %d ',i, D(2,i)))
end
disp(sprintf(' '))
disp(sprintf('Weiter mit SPACE'))
pause

end

disp(sprintf(' '))

%Ausplotten der Daten
sel=input('Bitte die zu plottende Kanalnummer eingeben (0,1, 2 für beide oder 9 = Quit): ');

if sel==9


elseif sel==0
plot(p,D(1,1:samp),'r')
axis([0 samp-1 -10 10])
grid,xlabel('SAMPLE NUMMER\rightarrow'),ylabel('Volt\rightarrow')
title('Messdaten Kanal 0')

elseif sel==1
plot(p,D(2,1:samp),'g')
axis([0 samp-1 -10 10])
grid,xlabel('SAMPLE NUMMER\rightarrow'),ylabel('Volt\rightarrow')
title('Messdaten Kanal 1')

elseif sel==2
plot(p,D(1,1:samp),'r',p,D(2,1:samp),'g')
axis([0 samp-1 -10 10])
grid,xlabel('SAMPLE NUMMER\rightarrow'),ylabel('Volt\rightarrow')
title('Messdaten Kanal 0 = rot - 1 = grün')

end

%Programmende***************************************************

Gast
2004-01-30, 11:32:04
hui, danke erstmal. muß zum zahnarzt. sllte ich danach noch gut gelaunt sein probier ich das hier mal zu verstehen :-)

Gast
2004-01-31, 03:08:41
oh, ich raff gar nix mehr....aber ich bin mir sicher das ich das früher mal mit einem "2-zeiler" erledigt hab.