Anhang 123
Anhang
A Archimedisches Auftriebprinzip zur Bestimmung der
Dichte
Die Dichte ρ ist durch das Verhältnis der Masse m zum Volumen V definiert:
mV
ρ = (A1)
Die SI-Einheit der Dichte ist kg/cm³. Für Laborzwecke wird jedoch oft die Einheit g/cm³
verwendet.
Dichtebestimmungen werden häufig nach dem „Archimedischen Prinzip“ durchgeführt.
Dieses Prinzip besagt, dass jeder Körper, der in eine Flüssigkeit getaucht wird, um soviel
leichter wird, wie die von ihm verdrängte Flüssigkeitsmenge wiegt.
Die Dichte von Festkörpern wird mit Hilfe einer Flüssigkeit bestimmt, deren Dichte ρ0
bekannt ist. Als Referenzflüssigkeit wurde destilliertes Ethanol der Dichte ρ0=0,78934 g/cm³
bei T=20°C verwendet. Der Festkörper wird mit Hilfe der Dichtewaage einmal in (A) und
anschließend in der Referenzflüssigkeit (B) gewogen. Aus den beiden Wägungen lässt sich
die Dichte ρ wie folgt berechnen:
0A
A Bρ ρ= ⋅
−. (A2)
In den Tabellen 1 und 2 sind die jeweiligen Messdaten für den verstreckten sowie
unverstreckten Bereich der POM Proben illustriert. Für die Dichtemessungen wurden
Knochen des Typ 3 verwendet.
Anhang 124
Tabelle A1: Ermittelte Messdaten für den verstreckten Bereich der POM Proben.
Probennummer A [g] B [g] ρ0 [g/cm³]
(T=20°C) ρ [g/cm³]
1 0,0809 0,0305 0,78934 1,2670
2 0,1536 0,0571 0,78934 1,2564
3 0,0932 0,0347 0,78934 1,2575
4 0,1138 0,0417 0,78934 1,2459
5 0,0937 0,0343 0,78934 1,2451
Tabelle A2: Ermittelte Messdaten für den unverstreckten Bereich der POM Proben.
Probennummer A [g] B [g] ρ0[g/cm³]
(T=20°C) ρ [g/cm³]
1 0,9566 0,4184 0,78934 1,4030
2 0,9237 0,4040 0,78934 1,4030
3 0,9443 0,4125 0,78934 1,4016
4 0,9056 0,3956 0,78934 1,4016
5 0,9334 0,4073 0,78934 1,4004
Anhang 125
B CPMG-Messkurven zur T2-Zeit Bestimmung
Abbildung B1: Mittels biexponentieller Funktion angepasste CPMG-Kurven trockener unverstreckter sowie verstreckter Proben.
Abbildung B2: Mittels triexponentieller Funktion angepasste CPMG-Kurven „nasser“ unverstreckter sowie verstreckter Proben.
Anhang 126
C NMR-Flüssigspektrum von POM
Abbildung C1: POM-Flüssigspektrum [BASF03].
D Mathematisches Modell des Diffusionsvorganges
Der Diffusionsprozess wird durch das zweite Ficksche Gesetz beschrieben
2
2
xcD
tc
∂∂
=∂∂ , (D1)
c = Konzentration,
x = Ortskoordinate.
Weiterhin wird die dreidimensionale Geometrie der Proben auf ein eindimensionales
Diffusionsproblem vereinfacht, da Überlagerungseffekte an den Ecken zu vernachlässigen
sind. Aufgrund der flächigen Struktur mit geringer Dicke ist im Wesentlichen nur die
Diffusion normal zu dieser Fläche für die Gewichtszunahme der Probe ausschlaggebend.
Lösung des eindimensionalen Problems:
Eine geschickte Substitution mit Dtx
4=ξ liefert
022
2
=ξ
ξ+ξ d
dcd
cd (D2)
Anhang 127
Gleichung D2 hat die allgemeine Lösung:
( )2exp ξ−⋅=ξ
bddc (D3)
Integration nach dξ liefert die allgemeine Lösung:
( ) ( ) .consterf2
+ξ⋅π
=ξbc (D4)
mit der Fehlerfunktion ( )2
0
2erf( ) expx
x z dzπ
≡ −∫ [Bro99]
Die spezielle Lösung erhält man durch Verknüpfung mit den problemspezifischen
Randbedingungen. Wir gehen zunächst von einem semiinfiniten Problem aus, d.h. das Wasser
tritt nur an der Stelle x=0 ein (siehe Abbildung D1 a):
x
c
c0
H2Oc = ∞ t >0
t = ∞
0
c∞
0 a
H2O H2O
x
a.) b.)
t = 0
Abbildung D1: a) Einseitige Einlagerung von Wasser. b) Symmetrische Einlagerung von
Wasser.
Folgende Randbedingungen sind ausreichend:
1.) Das Wasserreservoir außerhalb der Probe ist unendlich und zeitlich konstant.
2.) Zu Beginn ist die Konzentration innerhalb der Probe gleichmäßig c0, d.h.
für t=0 und für alle x ≥ 0: c(x)=c0 bzw. für ξ=∞ ist c(ξ)=c0.
3.) Nach unendlicher Beobachtungszeit nimmt die Probe eine Sättigungskonzentration c∞ an,
d.h. für t=∞: c(x)=c∞ für alle x≥0 bzw. für ξ=0 ist c(ξ)=c∞.
Aus B4 folgt const.=c∞
Anhang 128
und ( )∞−π
= ccb 02 .
Die vollständige Lösung des semiinfinten Problems ist damit
( ) ( ) ( ) ∞∞ +ξ⋅
π
−⋅=ξ c
ccc o erf
2
bzw.
( ) ( )∞
∞ +⎟⎟⎠
⎞⎜⎜⎝
⎛⋅
π
−⋅= c
Dtxcc
txc o
4erf
2, . (D5)
Das Problem ist jedoch symmetrisch, da das Wasser von zwei Seiten (bei x=0 und x=a,
eindimensionale Vereinfachung, siehe Abbildung D1) her eindringt. Daher muss (D5) muss
symmetrisiert werden, was durch die ungerade Symmetrie der Fehlerfunktion
( erf(-x)=-erf(x) ) leicht zu erfüllen ist.
Als Lösung erhält man
( ) ( )0, erf +erf erf2 2 2
x a x ac x t c c cDt Dt Dt∞ ∞
⎡ ⎤−⎛ ⎞ ⎛ ⎞ ⎛ ⎞= − ⋅ − +⎢ ⎥⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎝ ⎠ ⎝ ⎠ ⎝ ⎠⎣ ⎦
(D6)
Die gravimetrische Analyse registriert allerdings die eingedrungene Wassermenge für die
ganze Probe, so dass für eine korrekte Wiedergabe der Messergebnisse, Gleichung D6 von
x=0 bis a integriert werden muss.
(D7) ( ) ( )∫=a
dxtxctc0
,
( ) ( )⎥⎥⎦
⎤
⎢⎢⎣
⎡⎟⎟⎠
⎞⎜⎜⎝
⎛⋅⋅π−
⎭⎬⎫
⎩⎨⎧
−⎟⎟⎠
⎞⎜⎜⎝
⎛−⋅
⋅π
−−= ∞∞
Dtaa
DtaDt
accc
tc2
erf14
exp42
0 (D8)
mit c∞ = Sättigungskonzentration innerhalb der Probe zu t = ∞,
c0 = Anfangskonzentration innerhalb der Probe (t = 0), a = (kleinste) Dicke der Probe [m], D = Diffusionskonstante [m2/s], t = Zeit [s].
Anhang 129
E Einlagerungsdynamik von Wasser
Bei Raumtemperatur
Abbildung E1 zeigt die gravimetrischen Messdaten von drei unverstreckten Proben, die nach
vorangegangenem Trocknen in Wasser bei Raumtemperatur gelagert wurden. Die Messreihen
unterlagen keinen auffälligen Abweichungen, so dass eine Anpassung durch alle Messpunkte
möglich war.
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 x105100
100.05
100.1
100.15
100.2
100.25
100.3
100.35
100.4
100.45
Zeit [sec.]
Was
serz
unah
me
[%]
Unverstreckte Probe in Wasser bei Raumtemperatur
Messung 1Messung 2Messung 3
c∞
Abbildung E1: Einlagerungsdynamik von Wasser bei Raumtemperatur in eine unverstreckte Probe. Die Messpunkte wurden mit der Gleichung 3.6 angepasst ( rote Linie ). Die Messpunkte liegen innerhalb des Konfidenzintervalls ( gestrichelte grüne Linie ).
Tabelle E1: Diffusionskonstanten und die prozentuale Wasserzunahme von unverstreckten
Proben in Wasser bei Raumtemperatur
Diffusionskonstante[m2/s] Absoluter
statistischer Fehler [m2/s]
Prozentuale Wasserzunahme
∆c = c∞-c0 [%]
Absoluter statistischer
Fehler (Gaußsche Fehleraddition)
[%] Fit an Messung 1 1,8·10-12 ± 6·10-13 0,37 ± 0,04 Fit an Messung 2 1,6·10-12 ± 5,6·10-13 0,38 ± 0,05 Fit an Messung 3 1,6·10-12 ± 4,7·10-13 0,38 ± 0,04
Fit an alle Messungen 1,7·10-12 ± 2,8·10-13 0,38 ± 0,02
Es wurde festgestellt, dass selbst nach 120 h keine Sättigung der Probe eintrat. Der Mittelwert
für die prozentuale Zunahme beträgt 0,38%. Die gemittelte Diffusionskonstante beträgt hier
1,7·10-12 m2/s. Es ist bekannt, dass der Sättigungswert für Wasser in unverstreckten Proben ca.
Anhang 130
1% beträgt [BASF].
Wie schon in den unverstreckten Proben festgestellt wurde, ist selbst eine sehr lange
Lagerung in Wasser bei Raumtemperatur nicht ausreichend um eine Sättigung zu erzielen.
Abbildung E2 beschreibt die Einlagerung von Wasser bei Raumtemperatur im verstreckten
Bereich der Probe.
0 1 2 3 4 5 6 7100
100.1
100.2
100.3
100.4
100.5
100.6
100.7
100.8
Zeit [sec.]
Was
serz
unah
me
[%]
Verstreckte Probe in Wasser bei Raumtemperatur
Messung 1Messung 2Messung 3
Messung 1Messung 2Messung 3
x105
c∞
Abbildung E2: Einlagerungsdynamik von Wasser bei Raumtemperatur in den verstreckten Bereich. Die Messpunkte wurden mit der Gleichung 3.6 angepasst ( rote Linie ). Die Messpunkte liegen größtenteils innerhalb des Konfidenzintervalls ( gestrichelte grüne Linie ).
Tabelle E2: Diffusionskonstanten und die prozentuale Wasserzunahme von verstreckten
Proben in Wasser bei Raumtemperatur
Diffusionskonstante[m2/s] Absoluter
statistischer Fehler [m2/s]
Prozentuale Wasserzunahme
∆c = c∞-c0 [%]
Absoluter statistischer
Fehler (Gaußsche Fehleraddition)
[%] Fit an Messung 1 4·10-12 ± 1,2·10-12 0,59 ± 0,03 Fit an Messung 2 5,4·10-12 ± 2,4·10-12 0,58 ± 0,05 Fit an Messung 3 4,8·10-12 ± 1,7·10-12 0,79 ± 0,05
Fit an alle Messungen 4,7·10-12 ± 1,5·10-12 0,62 ± 0,04
Eine Sättigung wird bei Raumtemperatur nicht vollständig erreicht. Vergleicht man nun die
prozentual eingelagerte Wassermenge zwischen unverstreckter und verstreckter Probe, so ist
die Zunahme an Wasser im verstreckten Bereich mit 0.62 % etwa doppelt so groß. Das ist
ebenfalls auf eine größere Diffusionskonstante zurückzuführen, die hier mit 4,7·10-12 m2/s um
einen Faktor vier größer ist als für unverstrecktes POM.
Anhang 131
Bei definierter Luftfeuchtigkeit
Es ist bekannt, dass POM bei Normalklima (DIN 55014-23/50-2) etwa 0,2% Wasser aus der
Umgebung aufnimmt [BASF]. Dabei wurde aber nicht zwischen verstreckten und
unverstreckten Bereichen unterschieden. Bei den folgenden Messungen wurde mit Hilfe eines
Hygrometers die relative Luftfeuchtigkeit eines klimatisierten Labors gemessen. Die
Raumtemperatur betrug 21,6°C und die relative Luftfeuchtigkeit wurde auf 45,8% bestimmt.
Alle Proben wurden vorher bei 100°C im Vakuum getrocknet.
0 0.5 1 1.5 2 2.5 3 3.5 x 105100
100.02
100.04
100.06
100.08
100.1
100.12
100.14
100.16
Zeit [sec.]
Was
serz
unah
me
[%]
Unverstreckte Probe in normaler Atmosphäre
Messung 1Messung 2
c∞
Abbildung E3: Einlagerungsdynamik von atmosphärischem Wasser bei relativer Luftfeuchtigkeit von 45,8 % in den unverstreckten Bereich. Die Messpunkte wurden mit der Gleichung 3.6 angepasst ( rote Linie ). Die Messpunkte liegen innerhalb des Konfidenzintervalls ( gestrichelte grüne Linie ).
Tabelle E3: Diffusionskonstanten und die prozentuale Wasserzunahme von atmosphärischem
Anhang 132
Wasser (Luftfeuchtigkeit von 45,8 %) in unverstreckten Proben.
Diffusionskonstante[m2/s] Absoluter
statistischer Fehler [m2/s]
Prozentuale Wasserzunahme
∆c = c∞-c0 [%]
Absoluter statistischer
Fehler (Gaußsche Fehleraddition)
[%] Fit an Messung 1 1,1·10-11 ± 3·10-12 0,13 ± 0,01 Fit an Messung 2 7,4·10-12 ± 1,7·10-12 0,13 ± 0,01 Fit an Messung 3 8,9·10-12 ± 2,4·10-12 0,13 ± 0,01
0 0.5 1 1.5 2 2.5 3 3.5 x 105100
100.02
100.04
100.06
100.08
100.1
100.12
100.14
Zeit [sec.]
Was
serz
unah
me
[%]
Verstreckte Probe in normaler Atmosphäre
Messung 1Messung 2Messung 3
Messung 1Messung 2Messung 3
c∞
Abbildung E4: Einlagerungsdynamik von atmosphärischem Wasser bei relativer Luftfeuchtigkeit von 45,8 % in den verstreckten Bereich. Die Messpunkte wurden mit der Gleichung 3.6 angepasst ( rote Linie ). Die Messpunkte liegen größtenteils innerhalb des Konfidenzintervalls ( gestrichelte grüne Linie ).
Tabelle E4: Diffusionskonstanten und die prozentuale Wasserzunahme von atmosphärischem
Wasser (Luftfeuchtigkeit von 45,8 %) in verstreckten Proben.
Diffusionskonstante[m2/s] Absoluter
statistischer Fehler [m2/s]
Prozentuale Wasserzunahme
∆c = c∞-c0 [%]
Absoluter statistischer
Fehler (Gaußsche Fehleraddition)
[%] Fit an Messung 1 1,2·10-11 ± 2,65·10-12 0,12 ± 0,01 Fit an Messung 2 1,1·10-11 ± 3,45·10-12 0,13 ± 0,01 Fit an Messung 3 1,1·10-11 ± 3·10-12 0,13 ± 0,01
Fit an alle Messungen 1,1·10-11 ± 1,98·10-12 0,13 ± 0,01
Sehr erstaunlich war bei dieser Untersuchung, dass sowohl die Diffusionskonstanten als auch
Anhang 133
die prozentuale Wasserzunahme keine Unterschiede zwischen verstreckten und
unverstreckten Proben zeigten. Die prozentuale Zunahme an Wasser betrug im Mittel im
unverstreckten Bereich sowie im verstreckten Bereich 0,13%. Des Weiteren wurde festgestellt,
dass auch die ermittelten Diffusionskonstanten für beide Bereiche eine innerhalb des Fehlers
liegende Größenordnung aufwiesen.
F Experimentelle Bedingungen zu den NMR-Bildern und
Matlab Auswerteroutinen Die in dieser Arbeit vorgestellten NMR-Bilder sind an einem Bruker DSX 300 der Feldstärke
7T gemessen worden. Mit Ausnahme der POM-Werkstücke, die in einem Birdcage (l = 5cm
und d = 2.5cm) untersucht worden sind wurde eine Solenoidspule mit einem Durchmesser
von 5mm verwendet. In diesem Abschnitt werden die jeweiligen Pulssprogramme der
NMR-Bildgebungssequenzen mit den dazugehörigen Zeiten bzw. Parameter auflistet.
Anschließend wird die Matlab Auswerteroutine zur Diffusionstensorbildgebung vorgestellt.
Pulsprogramm zu Abbildung 4.1 (Magisches Echo)
Messung: me 2d pom_loch
p1: 3.75 µs
p2: 7.5 µs
O1: 8398 Hz
swh: 100kHz
d31:5 µs
d2: 500 µs
d3: 200 µs
aq: 1.33 ms
# 1 "/u/exp/stan/nmr/lists/pp/me_2d"
;magic echo
;1D dimension
1s ze
5m pl1:f1 ;set rf power level
Anhang 134
1 p1 ph1 ;90 degree pulse
d31:ngrad
d2 ;tau (time delay)
d31:ngrad
p1 ph2 ;90 degree pulse
10u pl2:f1
p2 ph1 ;first Burstpulse +x
p2 ph3 ;second Burstpulse -x
10u pl1:f1
p1 ph4 ;90 degree pulse
d31:ngrad
d3 ;second delay
5u ph31 syrec
aq adc ph0
d31:ngrad
rcycnp=1
d1 st
lo to 1 times nbl
ipp0
ipp1
ipp2
ipp3
ipp4
lo to 1 times l1
wr #0
exit
ph0=0 0 1 1 2 2 3 3
ph1=0 0 1 1 2 2 3 3 ; first 90
ph2=1 1 0 0 3 3 2 2 ;
ph3=2 2 3 3 0 0 1 1
ph4=3 1 2 0 1 3 0 2
ph31=0
Pulsprogramm zu Abbildung 4.2 und 4.3 (Spin Echo)
Messung: im2dhard_8 und 9
Anhang 135
p1: 3.5 µs
p2: 7 µs
O1: -2000 Hz
swh: 100kHz
d31:5 µs
d1: 98.835 ms
d2: 100 µs
d3: 740 µs
d9: 5µs
aq: 1.33 ms
# 1 "/u/exp/stan/nmr/lists/pp/im2dhard"
# 1 "/u/exp/stan/nmr/lists/pp//Grad_Blank.incl"
;Grad_Blank.incl - include file to handle the Gradient blanking unit
;avance-version
;version 951214 KLZ
# 3 "/u/exp/stan/nmr/lists/pp/im2dhard"
1s ze ; zero data block and initialize
10u setnmr0|32 setnmr0|33 setnmr0|34
5 p1:f1 ph1
d3
p2:f1 ph2
d3
d1
d1
lo to 5 times l2 ;dummy scans
20u pl1:f1
10 10u ; relaxation delay, set transmitter o1
p1:f1 ph1 ; (90 degree) excitation hard pulse
d31:ngrad ; dephasing read gradient and phase incrementcnst1xfbcnst1 ; gradient on
d3
d31:ngrad ; gradients off
d9 ; delay for long TE
p2:f1 ph2 ; 180 degree hard pulse
Anhang 136
d9 ; for long TE
d31:ngrad ; read gradient on
d2 ph3 ; gradient stabilization delay
d11
aq adc ph0 ; acquisition
d31:ngrad ; read gradient off
rcycnp=10 ; ns=1
d1
d1 st
lo to 10 times nbl ; nbl=number of projections
ipp0 ; phase cycle
ipp1 ; phase cycle
ipp2 ; phase cycle
3u
lo to 10 times l1 ; # of averages
d1 wr #0 ; write data to disc
exit
ph0 = 0 2 0 2 1 3 1 3
ph1 = 0 2 0 2 1 3 1 3
ph2 = 1 1 3 3 2 2 0 0
ph3 = 0
Pulsprogramm zu Abbildung 4.5 (Spin Echo)
Messung: POM_Punkt3
p1: 2.5 µs
p2: 5 µs
O1: -11812.73 Hz
swh: 100kHz
d31:5 µs
d1: 98.835 ms
d2: 100 µs
d3: 740 µs
aq: 1.33 ms
# 1 "/u/exp/stan/nmr/lists/pp//Grad_Blank.incl"
Anhang 137
;Grad_Blank.incl - include file to handle the Gradient blanking unit
;avance-version
;version 951214 KLZ
# 3 "/u/exp/stan/nmr/lists/pp/im2dhard"
1s ze ; zero data block and initialize
10u setnmr0|32 setnmr0|33 setnmr0|34
5 p1:f1 ph1
d3
p2:f1 ph2
d3
d1
d1
lo to 5 times l2 ;dummy scans
20u pl1:f1
10 10u ; relaxation delay, set transmitter o1
p1:f1 ph1 ; (90 degree) excitation hard pulse
d31:ngrad ; dephasing read gradient and phase incrementcnst1xfbcnst1 ; gradient on
d3
d31:ngrad ; gradients off
d9 ; delay for long TE
p2:f1 ph2 ; 180 degree hard pulse
d9 ; for long TE
d31:ngrad ; read gradient on
d2 ph3 ; gradient stabilization delay
d11
aq adc ph0 ; acquisition
d31:ngrad ; read gradient off
rcycnp=10 ; ns=1
d1
d1 st
lo to 10 times nbl ; nbl=number of projections
ipp0 ; phase cycle
ipp1 ; phase cycle
ipp2 ; phase cycle
3u
Anhang 138
lo to 10 times l1 ; # of averages
d1 wr #0 ; write data to disc
exit
ph0 = 0 2 0 2 1 3 1 3
ph1 = 0 2 0 2 1 3 1 3
ph2 = 1 1 3 3 2 2 0 0
ph3 = 0
Pulsprogramm zu Abbildung 4.8 (Stimuliertes Echo)
Messung: ste_pom
p1: 3.8 µs
p2: 7.6 µs
O1: -10023.46 Hz
swh: 50kHz
d3:2.5 µs (δ)
d4: 670 µs
d5: 10 ms
d6: 200 ms (∆)
d10: 10 µs
aq: 2.61 ms
2D stimulated echo sequence
"d30 = td*dw"
1s ze
5m pl1:f1 ;set rf power level
; DUMMY SCANS (# = L6)
1 p1 ph1
d3
d4
p1 ph2
d5
d6
p1 ph2
Anhang 139
d3
d10
d30
d1
lo to 1 times l6
;EXPERIMENT IN MEMORY (NS = 1, 2nd dim = NBL)xfb
10 p1 ph1 ;90 degree pulse
d2:ngrad
d3 ;diff gradient on
d2:ngrad ;diff gradient off read/phase on
d4 ;=aq/2
d2:ngrad ;all gradient ring down time
p1 ph2 ;90 degree pulse
d2:ngrad
d5 ;Gradient spoiler pulse
d2:ngrad
d6
p1 ph2 ;90 degree pulse
d2:ngrad
d3 ;gradient on time
d2:ngrad ;gradient ring down time
d10 ;tau
d2:ngrad
5u adc ph0 ;start acquisition
aq ;acquisition
d2:ngrad ;gradient ring down time
d1
rcyc=10
d1 st ;increment echo pointer
lo to 10 times nbl ;nbl=number of projections
5m ip0
5m ip0
5m ip1
5m ip1
lo to 1 times l1 ;# of averages
d1 wr #0
exit
Anhang 140
ph0=0
ph1=0
ph2=2
ph3=0
Pulsprogramm zu Abbildung 4.10 und 4.11 (Magisches Echo)
Messung: me_zahnrad_2D
p1: 34.5 µs
p2: 530 µs
O1: -12136.13 Hz
swh: 100kHz
d31:5 µs
d1: 96.9675 ms
d3: 250 µs
aq: 1.33 ms
;magic echo
;2D dimension
1s ze
5m pl1:f1 ;set rf power level
1 p1 ph1 ;90 degree pulse
d31:ngrad
d2 ;tau (time delay)
d31:ngrad
p1 ph2 ;90 degree pulse
10u pl2:f1
p2 ph1 ;first Burstpulse +x
p2 ph3 ;second Burstpulse -x
10u pl1:f1
p1 ph4 ;90 degree pulse
Anhang 141
d31:ngrad
d3 ;second delay
5u ph31 syrec
aq adc ph0
d31:ngrad
rcycnp=1
d1 st
lo to 1 times nbl
ipp0
ipp1
ipp2
ipp3
ipp4
lo to 1 times l1
wr #0
exit
ph0=0 0 1 1 2 2 3 3
ph1=0 0 1 1 2 2 3 3 ; first 90
ph2=1 1 0 0 3 3 2 2 ;
ph3=2 2 3 3 0 0 1 1
ph4=3 1 2 0 1 3 0 2
ph31=0
Pulsprogramm zu Abbildung 4.12 (Spin-Echo)
Messung: dishwash p3d
p1: 33 µs
p2: 66 µs
O1: -5000 Hz
swh: 100kHz
d31:5 µs
d1: 245.835 ms
d2: 100 µs
d3: 740 µs
d9: 50 µs
Anhang 142
aq: 1.33 ms
;Grad_Blank.incl - include file to handle the Gradient blanking unit
;avance-version
;version 951214 KLZ
# 3 "/u/exp/stan/nmr/lists/pp/im2dhard"
1s ze ; zero data block and initialize
10u setnmr0|32 setnmr0|33 setnmr0|34
5 p1:f1 ph1
d3
p2:f1 ph2
d3
d1
d1
lo to 5 times l2 ;dummy scans
20u pl1:f1
10 10u ; relaxation delay, set transmitter o1
p1:f1 ph1 ; (90 degree) excitation hard pulse
d31:ngrad ; dephasing read gradient and phase incrementcnst1xfbcnst1 ; gradient on
d3
d31:ngrad ; gradients off
d9 ; delay for long TE
p2:f1 ph2 ; 180 degree hard pulse
d9 ; for long TE
d31:ngrad ; read gradient on
d2 ph3 ; gradient stabilization delay
d11
aq adc ph0 ; acquisition
d31:ngrad ; read gradient off
rcycnp=10 ; ns=1
d1
d1 st
lo to 10 times nbl ; nbl=number of projections
ipp0 ; phase cycle
ipp1 ; phase cycle
Anhang 143
ipp2 ; phase cycle
3u
lo to 10 times l1 ; # of averages
d1 wr #0 ; write data to disc
exit
ph0 = 0 2 0 2 1 3 1 3
ph1 = 0 2 0 2 1 3 1 3
ph2 = 1 1 3 3 2 2 0 0
ph3 = 0
Pulsprogramm zu Abbildung 4.14 (Spin Echo) Messung: im2dhard_test 30 und 31
p1: 75 µs
p2: 150 µs
O1: -12000 Hz
swh: 100kHz
d31:5 µs
d1: 98.835 ms
d2: 100 µs
d3: 700 µs
d9: 50 µs
aq: 1.33 ms
# 1 "/u/exp/stan/nmr/lists/pp/im2dhard"
# 1 "/u/exp/stan/nmr/lists/pp//Grad_Blank.incl"
;Grad_Blank.incl - include file to handle the Gradient blanking unit
;avance-version
;version 951214 KLZ
# 3 "/u/exp/stan/nmr/lists/pp/im2dhard"
1s ze ; zero data block and initialize
10u setnmr0|32 setnmr0|33 setnmr0|34
Anhang 144
5 p1:f1 ph1
d3
p2:f1 ph2
d3
d1
d1
lo to 5 times l2 ;dummy scans
20u pl1:f1
10 10u ; relaxation delay, set transmitter o1
p1:f1 ph1 ; (90 degree) excitation hard pulse
d31:ngrad ; dephasing read gradient and phase incrementcnst1xfbcnst1 ; gradient on
d3
d31:ngrad ; gradients off
d9 ; delay for long TE
p2:f1 ph2 ; 180 degree hard pulse
d9 ; for long TE
d31:ngrad ; read gradient on
d2 ph3 ; gradient stabilization delay
d11
aq adc ph0 ; acquisition
d31:ngrad ; read gradient off
rcycnp=10 ; ns=1
d1
d1 st
lo to 10 times nbl ; nbl=number of projections
ipp0 ; phase cycle
ipp1 ; phase cycle
ipp2 ; phase cycle
3u
lo to 10 times l1 ; # of averages
d1 wr #0 ; write data to disc
exit
ph0 = 0 2 0 2 1 3 1 3
ph1 = 0 2 0 2 1 3 1 3
ph2 = 1 1 3 3 2 2 0 0
ph3 = 0
Matlab Auswerteroutine zur Diffusionstensorbildgebung
Anhang 145
Die Auswerteroutine besteht aus folgenden Programmen (m-files):
• read_diff.m (laden der Daten, Filter, Fourier-Transformation, Korrektur, Speichern
der Daten)
• gaussmod.m (Routine für die Gauß-Anpassung)
• calc_ADC (berechnet den ADC für die verschiedenen Orientierungen)
• calc_eig.m (berechnet den Diffusionstensor und diagonalisiert ihn)
• ellipsoid.m (Subroutine zur Berechnung der Ellipsoide)
• calc_elip.m (berechnet die Ellipsoide und stellt sie dar)
Ein typischer Auswerteablauf läuft folgendermaßen ab:
>> param=[11, 7, .02, 128, 128, 43, 98, 1, 1]
>>data=read_diff(′d:\temp\ste_pom_2dort\′,param, ′d:\temp\pom3d_data.mat′);
>> adc=calc_ADC(′d:\temp\ pom3d_data.mat′ ,20, ′d:\temp\pom3d_ADC.mat′);
Anhang 146
>> ev=calc_eig(′d:\temp\ pom3d_ADC.mat′ , ′d:\temp\pom3d_eig.mat′);
Damit sind die Berechnungen abgeschlossen. Aus den berechneten Daten kann nun der
Tensor durch einen Ellipsoid visualisiert werden.
Anhang 147
>> p=[20, 10, 10, 1, 128, 1, 128]
>> ev=calc_elip(′d:\temp\ pom3d_eig.mat′ ,p, ′d:\temp\pom3d_elips.mat′);
Eine Erklärung der einzelnen Funktionen und Parameter befinden sich im Header des
jeweiligen Programms.
READ_DIFF %#
%# This function reads NMR-data in, which has a structure as in the
%# following protocol:
%#
%# The data consists of n_diff diffusion-weighted images with varying
%# gradient strengths in n_orient different (non-collinear) directions.
%# The first of these data is aquired with G=(0,0,0).
%# So that in total n_diff*n_orient+1 images exist.
%# For amplitude control, FIDs can be intercalated.
%#
%# Usage:
%#
%# data=read_diff(direc,process,outfile);
%#
%# direc=BRUKER-style directory of the input data including final slash
%# this directory containes subdirectories of style 10\...
%#
%# outfile= output-file im MATLAB format (full filename)
%#
%# process=vector of the following style:
%# =[n_diff,n_orient,fw,nzx,nzy,shx,shy,fide,fidc]
%#
%# where, n_diff= number of experiments of constant G-direction but
%# vaying strengths
Anhang 148
%# n_orient= number of G-orientations for 3D-tensors at least 6
%# fw = width of Gaussian lowpass filter
%# (the smaller the narrower the filter)
%# nzx= width for zero-filling (rows)
%# nzy= width for zero-filling (columns)
%# shx= spatial shifting of images (rows)
%# shy= spatial shifting of images (columns)
%# fide= 0-> no FID acquired, 1-> FID/SER
%# fidc= 0-> no correction of data with FID, 1-> correction
%#
%# Example:
%# >> p=[11,7,.02,128,128,43,98,1,1];
%# >> data=read_diff('d:\temp\ste_pom_2dort\',p,'d:\temp\pom3d_data.mat');
%#
%######################################################################
function data=read_diff(direc,proc,outfile)
n_diff=proc(1);
n_orient=proc(2);
fw=proc(3);
nzx=proc(4);
nzy=proc(5);
shx=proc(6);
shy=proc(7);
fide=proc(8);
fidc=proc(9);
grad_cal=[1,1,1.1]/100; %gradient calibration % -> T/m
if fide==1
%Reading FID data
dat_control=zeros(n_diff*n_orient,1);
for i=1:n_diff*n_orient+1
filef=[direc,num2str(i*2-1),'\fid'];
disp(['Reading FID-file: ',filef]);
fid=fopen(filef,'r','b');
data=fread(fid,'int32');
fclose(fid);
[fsize,c]=size(data);
data=reshape(data,2,fsize/2);
data=complex(data(1,:),data(2,:));
Anhang 149
dat_control(i)=sum(abs(fft(data))); %sum over FID spectrum as reference
end
end
dat_control=dat_control./dat_control(1); %normalised to 1 @ 1st point
figure('name','read / FFT control')
subplot(2,2,1);plot(dat_control,'b','LineWidth',2);
title('Amplitude of FIDs');
disp('######################################################');
%read data for G=(0,0,0)
if fide==0
filef=[direc,'1\'];
else
filef=[direc,'2\'];
end
head0=textread([filef,'acqus'],'%s');
for i=1:3
g(i)=str2num(char(head0(strmatch('##$CNST=',head0')+i+2)));
end
if (g(1)==0)&(g(2)==0)&(g(3)==0)
disp(['Reading ZERO-file: ',filef]);
else
disp('ERROR: Incorrect DATA setup (wrong ZERO-G data)');
end
dim=str2num(char(head0(strmatch('##$PARMODE=',head0')+1)))+1;
if dim==2
rx=str2num(char(head0(strmatch('##$TD=',head0')+1)))/2;
if rx<=128
nx=128;
else
nx=rx;
end
ny=str2num(char(head0(strmatch('##$NBL=',head0')+1)));
disp(['Spatial dimensions: x= ',num2str(nx),' y= ',num2str(ny)]);
else
disp('ERROR: Data is not 2D!');
end
%Defining FILTER function
filter=apod('G',[nzx,nzy],[nzx,nzy]/2,[fw,fw]);
%x=linspace(-1,1,nzx);
Anhang 150
%y=linspace(-1,1,nzy);
%[X,Y]=meshgrid(x,y);
%filter=exp(-(X.^2+Y.^2)/fw); %Gaussian of width fw
%Plotting filter function
subplot(2,2,2); surf(filter,'EdgeColor','none','FaceColor','green');
camlight headlight; lighting phong; view(45,50); axis tight; axis off;
title('Filter function');
%Reading Dataset G=0,0,0
fid=fopen([filef,'ser'],'r','b');
dat=fread(fid,'int32');
fclose(fid);
[fsize,c]=size(dat);
dat=reshape(dat,2,fsize/2);
dat=complex(dat(1,:),dat(2,:));
dat=reshape(dat,nx,ny);
datz=zeros(nzx,nzy); %Zerofilling
datz(1:nx,1:ny)=dat;
datz=shift2d(datz,round((nzx-rx)/2),round((nzy-ny)/2)).*filter;
%Plotting filter function
subplot(2,2,3); surf(real(datz),'EdgeColor','none','FaceColor','red');
camlight headlight; lighting phong; view(45,50); axis tight; axis off;
title('Filtered real part');
data0=shift2d(abs(fftshift(fft2(datz))),shx,shy);
subplot(2,2,4); imagesc(data0); colormap gray; axis off;
title('G=(0,0,0)');
disp('######################################################');
%Definitions
grad_value=zeros(3,n_diff,n_orient);
data=zeros(nx,ny,n_diff,n_orient);
epsilon=zeros(n_diff,n_orient);
delta=zeros(n_diff,n_orient);
for i=2:n_diff*n_orient+1
if fide==0 %if no FID data taken every next file
file_index=i;
else % if FID taken every other file
file_index=i*2;
end
filef=[direc,num2str(file_index)];
Anhang 151
head0=textread([filef,'\acqus'],'%s');
m=mod(i+n_diff-2,n_diff)+1; %row of matrix
n=floor((i+n_diff-2)/n_diff); %column of matrix
disp(['Reading data-file: ',filef,' #:',num2str(i),' = (',num2str(m),'/',num2str(n),')']);
for j=1:3
grad_value(j,m,n)=str2num(char(head0(strmatch('##$CNST=',head0')+j+2)))*grad_cal(j);
end
disp(['Gx= ',num2str(grad_value(1,m,n)),'T/m, Gy= ',num2str(grad_value(2,m,n)),'T/m, Gz=
',num2str(grad_value(3,m,n)),'T/m']);
for j=1:31
d(j)=str2num(char(head0(strmatch('##$D=',head0')+j+2)));
end
for j=1:31
p(j)=str2num(char(head0(strmatch('##$P=',head0')+j+2)));
end
epsilon(m,n)=d(3);
delta(m,n)=5.*d(2)+d(3)+d(4)+d(5)+d(6)+2*p(1)*1e-6;
disp(['delta: ',num2str(epsilon(m,n)),' Delta: ',num2str(delta(m,n))]);
%read in data sets
fid=fopen([filef,'\ser'],'r','b');
dat=fread(fid,'int32');
fclose(fid);
[fsize,c]=size(dat);
dat=reshape(dat,2,fsize/2);
dat=complex(dat(1,:),dat(2,:));
dat=reshape(dat,nx,ny);
datz=zeros(nzx,nzy); %Zerofilling
datz(1:nx,1:ny)=dat;
datz=shift2d(datz,round((nzx-rx)/2),round((nzy-ny)/2)).*filter;
if fidc==1 %correct with FID data
data(1:nzx,1:nzy,m,n)=shift2d(abs(fftshift(fft2(datz))),shx,shy)/dat_control(i);
disp(['Correct with FID: factor= ',num2str(dat_control(i))]);
else %no correction
data(1:nzx,1:nzy,m,n)=shift2d(abs(fftshift(fft2(datz))),shx,shy)
end
disp('___________________________________________________________');
end
save(outfile,'data','data0','epsilon','delta','grad_value');
Anhang 152
gaussmod
function estim=gaussmod(beta,x)
estim=beta(1)*exp(-(x-beta(2)).^2/beta(3));
calc_ADC %#
%# This function calculates the apparent diffusion coefficient (ADC)
%# from NMR-images as processed/saved by the routine READ_DIFF.
%#
%# Usage:
%#
%# data=calc_ADC(infile,threshold,outfile);
%#
%# infile=input file name as saved by READ_DIFF
%#
%# threshold= noise threshold in % of max of 0-G image (points below are ignored)
%#
%# outfile= output-file im MATLAB format (full filename)
%#
%#
%# Example:
%#
%# >> adc=calc_ADC('d:\temp\pom3d_data.mat',20,'d:\temp\pom3d_ADC.mat')
%#
%######################################################################
function local_ADC=calc_ADC(infile,noise_threshold,outfile)
load(infile,'-mat'); %load data
gamma=3e8/7.0463; %for 1H
[nx,ny,n_diff,n_orient]=size(data);
local_ADC=zeros(nx,ny,n_orient);
chi2=zeros(nx,ny,n_orient);
noise_threshold=max(max(data0))*noise_threshold/100;
%check if time varies within the n_diff dimension (later take just 1st entry
Anhang 153
for k=1:n_orient
if round(epsilon(1,k)*1e6)~= round(mean(epsilon(:,k))*1e6)
disp(['ERROR in orientation',num2str(k) ,' : delta varies within n_diff dimension']);
end
if round(delta(1,k)*1e6)~= round(mean(delta(:,k))*1e6)
disp(['ERROR in orientation',num2str(k) ,': Delta varies within n_diff dimension']);
end
end
for k=1:n_orient
for j=1:ny
disp(['Fitting orient: ',num2str(k),' of ',num2str(n_orient),' | row: ',num2str(j),' of ',num2str(ny)]);
for i=1:nx
if data0(i,j)>=noise_threshold
%linear estimate for gaussfit
%1) BRING DATA IN GOOD SHAPE
fit_data=data(i,j,:,k); %assign diffusion data for each point and orientation
fit_data=reshape(fit_data,n_diff,1); %bring it in suitable form
fit_data(n_diff+1)=data0(i,j); %insert 0-value
g=sqrt(grad_value(1,:,k).^2+grad_value(2,:,k).^2+grad_value(3,:,k).^2); %strength of gradient
g=reshape(g,n_diff,1); %bring it in suitable form
g(n_diff+1)=0; %insert 0-value
%2) MAKE A ESTIMATE
amp=data0(i,j); %estimated maximum from 0-data
lin=sqrt(abs(-log(fit_data./amp))); %linearisation
lin=reshape(lin,n_diff+1,1); %bring it in suitable form
a=polyfit(g,lin,1); %linear regression
width=1/a(1)^2; %Gaussian width approx.
init_val=[amp, 0, width]'; %Initial values for fit
%3) the following lines does a least square fit of a Gaussian
%to the data using the model in the file GAUSSMOD.M
dfit=nlinfit(g,fit_data,'gaussmod',init_val);
local_ADC(i,j,k)=1/(width*gamma^2*epsilon(1,k)^2*(delta(1,k)-epsilon(1,k)/3))/2/pi;
chi2(i,j,k)=sum(abs(fit_data-dfit(1)*exp(-(g-dfit(2)).^2/dfit(3))))^2;
end
end
end
end
disp('Gaussian fit completed!');
Anhang 154
minl=min(min(min(local_ADC)));
maxl=max(max(max(local_ADC)));
figure('name','Apparent Diffusion Coefficients');
for k=1:n_orient
subplot(2,2,k);imagesc(local_ADC(:,:,k),[minl,maxl]);colormap gray; axis off; axis equal;
gm=sqrt(grad_value(1,1,k).^2+grad_value(2,1,k).^2+grad_value(3,1,k).^2);
gx=round(grad_value(1,1,k)/gm*100)/100;
gy=round(grad_value(2,1,k)/gm*100)/100;
gz=round(grad_value(3,1,k)/gm*100)/100;
title(['(',num2str(gx),'/',num2str(gy),'/',num2str(gz),')']);
end
save(outfile,'local_ADC','data0','grad_value','chi2');
calc_eig %#
%# This function calculates the Diffusion Tensor and subsequently
%# diagonalises it and displays anisotropies. Using data as
%# processed/saved by the routine calc_ADC.
%#
%# Usage:
%#
%# data=calc_eig(infile,outfile);
%#
%# infile=input file name as saved by calc_ADC
%#
%# outfile= output-file im MATLAB format (full filename)
%#
%#
%# Example:
%#
%# >>ev=calc_eig('d:\temp\pom3d_ADC.mat','d:\temp\pom3d_eig.mat');
%#
%######################################################################
function eigen_values=calc_eig(infile,outfile)
infile='E:\Ko\temp\bambus_XYZ1fit.mat'
outfile='E:\ko\temp\bambus_test.mat'
load(infile,'-mat'); %load data
Anhang 155
[nx,ny,n_orient]=size(ADC);
grad_orient=zeros(3,n_orient);
dac=zeros(n_orient,6);
for i=1:n_orient
%calc grad magnitude
Gabs=sqrt(grad_value(1,1,i)^2+grad_value(2,1,i)^2+grad_value(3,1,i)^2);
grad_orient(1,i)=grad_value(1,1,i)/Gabs;
grad_orient(2,i)=grad_value(2,1,i)/Gabs;
grad_orient(3,i)=grad_value(3,1,i)/Gabs;
%calc equation system
dac(i,1)=grad_orient(1,i)*grad_orient(1,i);
dac(i,2)=grad_orient(2,i)*grad_orient(2,i);
dac(i,3)=grad_orient(3,i)*grad_orient(3,i);
dac(i,4)=2*grad_orient(1,i)*grad_orient(2,i);
dac(i,5)=2*grad_orient(2,i)*grad_orient(3,i);
dac(i,6)=2*grad_orient(1,i)*grad_orient(3,i);
end
ADC=permute(ADC,[3,1,2]);
D_tensor=zeros(nx,ny,6);
%solve overdetermined equation system for Diffusion Tensor
for i=1:nx
for j=1:ny
if ADC(1,i,j)~=0
D_tensor(i,j,:)=lsqr(dac, ADC(:,i,j),1e-3,10)';
end
end
end
disp('Tensor calculation completed!');
mint=min(min(min(D_tensor)));
maxt=max(max(max(D_tensor)));
figure('name','Diffusion Tensor');
subplot(3,2,1);imagesc(D_tensor(:,:,1),[mint,maxt]);colormap gray; axis off; axis equal;
title('Dxx');
subplot(3,2,2);imagesc(D_tensor(:,:,2),[mint,maxt]);colormap gray; axis off; axis equal;
title('Dyy');
subplot(3,2,3);imagesc(D_tensor(:,:,3),[mint,maxt]);colormap gray; axis off; axis equal;
title('Dzz');
subplot(3,2,4);imagesc(D_tensor(:,:,4),[mint,maxt]);colormap gray; axis off; axis equal;
Anhang 156
title('Dxy');
subplot(3,2,5);imagesc(D_tensor(:,:,5),[mint,maxt]);colormap gray; axis off; axis equal;
title('Dyz');
subplot(3,2,6);imagesc(D_tensor(:,:,6),[mint,maxt]);colormap gray; axis off; axis equal;
title('Dxz');
%create eigenvalues and -vectors
eigen_values=zeros(3,3,nx,ny);
eigen_vectors=zeros(3,3,nx,ny);
local_tensor=zeros(3,3);
for i=1:nx;
for j=1:ny;
local_tensor=[[D_tensor(i,j,1), D_tensor(i,j,4), D_tensor(i,j,6)]',[D_tensor(i,j,4), D_tensor(i,j,2),
D_tensor(i,j,5)]',[D_tensor(i,j,6), D_tensor(i,j,5), D_tensor(i,j,3)]'];
[eigen_vectors(:,:,i,j),eigen_values(:,:,i,j)]=eig(local_tensor);
end
end
eigen_vectors=shiftdim(eigen_vectors,2);
eigen_values=shiftdim(eigen_values,2);
disp('Tensor diagonalisation completed!');
mine=min(min(min(D_tensor)));
maxe=max(max(max(D_tensor)));
figure('name','Eigenvalues');
subplot(3,1,1);imagesc(eigen_values(:,:,1,1),[mine,maxe]);colormap gray; axis off; axis equal;
title('D1');
subplot(3,1,2);imagesc(eigen_values(:,:,2,2),[mine,maxe]);colormap gray; axis off; axis equal;
title('D2');
subplot(3,1,3);imagesc(eigen_values(:,:,3,3),[mine,maxe]);colormap gray; axis off; axis equal;
title('D3');
save(outfile,'D_tensor','eigen_vectors','eigen_values','data0');
end
Anhang 157
ellipsoid
function data3d=ellipsoid(n,d,v);
% creates a 3D ellipsoid of n*n*n points
% d is a 1*3 vector of the lengths of the semiaxes (eigenvalues) max=1
% v is the 3*3 transformation matrix
x=linspace(-1,1,n);
data3d=zeros(n,n,n);
if d(1)<=2/n
d(1)=2/n;
end
if d(2)<=2/n
d(2)=2/n;
end
if d(3)<=2/n
d(3)=2/n;
end
for i=1:n;for j=1:n; for k=1:n;
if (1-x(i)^2/d(1)^2-x(j)^2/d(2)^2-x(k)^2/d(3)^2)>=0
r=[x(i),x(j),x(k)];
r=((v*r'+1)/2)*(n-1)+1;
data3d(round(r(1)),round(r(2)),round(r(3)))=1;
end;
end;end;end;
data3d=smooth3(data3d,'box',5);
%figure
%p1 = patch(isosurface(data3d,0.1),'FaceColor','blue','EdgeColor','none');
%view(3); daspect([1,1,1]); axis([1 n 1 n 1 n -1 1]);
%camlight; camlight(-80,-10); lighting phong;
calc_elip
%#
%# This function calculates the dataset required for displaying the eigen-
%# values and -vectors of diffusion tensors as ellipsoids rotated in 3D.
%#
%# Usage:
Anhang 158
%#
%# image=calc_elip(infile,param,outfile);
%#
%# infile=input file name as saved by calc_eig
%#
%# outfile= output-file im MATLAB format (full filename)
%#
%# param = parameter-vector = [n,dx,dy,sx,ex,sy,ey]
%# n =points^3 for each ellipoid
%# dx=spacing of ellipoids in x-direction
%# (every dx points of the image an ellpsoid is drawn)
%# dy=spacing of ellipoids in y-direction
%# sx=starting point in the image in x-direction
%# ex=ending point in the image in x-direction
%# sy=starting point in the image in y-direction
%# ey=ending point in the image in y-direction
%#
%# Example:
%#
%# >> p=[20,10,10,1,128,1,128];
%# >> im=calc_elip('d:\temp\pom3d_eig.mat',p,'d:\temp\pom3d_elips.mat');
%#
%######################################################################
function image=calc_elip(infile,param,outfile)
load(infile,'-mat'); %load data
n=param(1);
dx=param(2);
dy=param(3);
sx=param(4);
ex=param(5);
sy=param(6);
ey=param(7);
nnx=(ex-sx)/dx+1;
nnx=round(nnx); %Aenderung
nny=(ey-sy+1)/dy+1;
nny=round(nny); %Aenderung
image=zeros(nnx*n,nny*n,n);
Anhang 159
dmd=max(max(max(max(eigen_values))));
ev=zeros(3,3);
%calc ellipsoids and place in matrix image
for i=0:nnx-1
for j=0:nny-1
ix=sx+i*dx;
iy=sy+j*dy;
if eigen_values(ix,iy,1,1).*eigen_values(ix,iy,2,2).*eigen_values(ix,iy,3,3)~=0
dimag=abs([eigen_values(ix,iy,1,1),eigen_values(ix,iy,2,2),eigen_values(ix,iy,3,3)])/dmd;
ev(:,:)=eigen_vectors(ix,iy,:,:);
image(i*n:(i+1)*n-1,j*n:(j+1)*n-1,:)=ellipsoid(n,dimag,ev);
end
end
end
%insert the data0 as lowest slice in the image
%therefore interpolate on image grid
[X,Y]=meshgrid(sx:ex,sy:ey);
xi=linspace(sx,ex,nnx*n);
yi=linspace(sy,ey,nny*n);
[XI,YI]=meshgrid(xi,yi);
ZI=interp2(X,Y,data0(sx:ex,sy:ey),XI,YI);
image0=zeros(nnx*n,nny*n,n+1);
image0(:,:,2:n+1)=image;
image0(:,:,1)=ZI/max(max(ZI));
image=image0;
save(outfile,'image');
%draw ellipsoids
figure('name','Ellipsoids');
p1 = patch(isosurface(image(:,:,2:n+1),.1),'FaceColor','red','EdgeColor','none');
hold on;
s=slice(image0,[],[],[1]);
set(s,'FaceColor','interp','EdgeColor','none');colormap gray;
view(3); daspect([1,1,1]); axis([1 nnx*n 1 nny*n 1 n+1 -1 1]); axis off;
camlight; camlight(-80,-10); lighting phong;
hold off;
Anhang 160
G Vorversuche zu den Gardinenhaltern
Abbildung G1: Vorversuchsmessungen zu den Gardinenhaltern. a) unbelastete Probe, b) belastete Probe, c) belastete Probe nach wiederholter Lagerung in Wasser für 2 Stunden.