Funktion von 3D Messdaten < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Hallo an alle Forumsteilnehmer,
ich habe folgends Problem, und muss gleich zu Anfang zugeben, dass ich mich in MATLAB nicht wirklich auskenne, da ich es für dieses spezielle Problem das erstemal anwende.
Aus Messungen der Intensitätsverteilung liegen mit Intensitätswerte (Z-Achse) vor, die sich über der Temperatur (Y-Achse) und dem Weg (X-Achse) ändern, sieht also ähnlich wie ein Wellenprofil aus.
Die Struktur der Messdaten ist die, dass ich in Excel ein Tabellenblatt, also eine Matrix erstellt habe, wobei hier in der ersten Spalte die Wegstrecke und in der ersten Spalte die Temperatur aufgetragen ist, die MAtrix selber beinhaltet dann die Intensitätswerte. mit n etwa 400 Werte und m ebenfalls
T1 T2 T3 T4......Tn
s1 i11 i12 i13 i14....i1n
s2
s3
s4
.
.
sm
Zur weiteren Verarbeitung möchte ich diese Werte in MATLAB importieren um dadurch eine Funktion zu erhalten oder zumindest die Ermittlung der lokalen Maxima zu ermöglichen. Bisherige Verusche in Excel oder Sigmaplot waren nicht von Erfolg gekrönt.
Falls es hierzu in MATLAB oder gerne auch einem anderen Programm eine Möglichkeit gibt , wäre ich über Inofrmationen wie dies zu bewerkstelligen ist dankbar.
vielen lieben Dank soweit schon mal
Michael
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 15:45 Di 15.11.2005 | Autor: | zur |
Hallo Michael
Um die Daten in MATLAB zu importieren kannst du die Excel Tabelle als Texfile speichern (nur Zahlen keine Buchstaben). Dann kannst du sie in MATLAB mit dem Befehl data=load(Filename mit Endung) der Variablen data zuordnen (kannst du auch anders nennen). Nun hast du eine Matrix. In der ersten Spalte stehen die s Werte und in der ersten Zeile die T Werte. Um das ganze graphisch darzustellen musst du diese Matrix noch auseinander nehmen. Du brauchst einen Vektor mit den s, Werten einen mit den T Werten und die Matrix mit den IWerten:
s=data(:,1)
T=data(1,:)
I=data(2:end,2:end)
Mit surf(s,T,I) kannst du die Daten graphisch darstellen. Dabei wird eine Fläche in die Punkte gelegt. Mit contour(s,T,I) bekommst du einen Höhenlinienplot (sihe MATLAB Help).
Für das finden von Extremalstellen ist mir kein Befehl bekannt. Wenn du eine Funktion in Punkte legen willst ist das immer eine Frage wie du zwischen den Stützstellen interpolieren willst. Ich würde da lediglich die Differenzen Zeilen- bzw. Spaltenweise bilden. Wechselt das Vorzeichen Liegt eine Extremalstelle vor.
[mm] a_{11} [/mm] - [mm] a_{12} [/mm] = [mm] b_{11}
[/mm]
[mm] a_{12} [/mm] - [mm] a_{13} [/mm] = [mm] b_{12}
[/mm]
[mm] b_{11} [/mm] > 0 > [mm] b_{12} \to a_{12} [/mm] ist lokales Minimum in Zeilenrichtung
[mm] b_{11} [/mm] < 0 < [mm] b_{12} \to a_{12} [/mm] ist lokales Maximum in Zeilenrichtung
Dasselbe muss für die Spaltenrichtung gemacht werden. ist [mm] a_{12} [/mm] auch in Spaltenrichtung ein lokales Minimum bzw. Maximum so ist es eine Extremalstelle. Ist es in Spaltenrichtung das umgekehrte so ist [mm] a_{12} [/mm] ein Sattelpunkt. In MATLAB kannst du mit spadi=diff(I,1,1) und zeidi=diff(I,1,2) die Spalten- bzw. Zeilendifferenzen berechnen (einer Variablen zugeordnet). Aus spadi und zeidi kannst du die Extrema herauslesen. Automatisches herauslesen könnte kompliziert sein. Falls das für dein Problem notwendig ist kann ich dir ein .m-File schicken, bräuchte dafür allerdings dein Excelfile um Fehler auszuschliessen.
Diese Lösung ist natürlich unter Umständen nur eine grobe Annäherung der Wirklichkeit. Wenn du keine Angaben über das Verhalten zwischen deinen Stützstellen hast, ist diese Lösung durchaus vertretbar. Sie wird auch genauer je mehr Werte du hast.
Ich hoffe dir einwenig geholfen zu haben.
Gruss zur
|
|
|
|