📄 v3d_import_slicer.m
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [x,y,z,v] = v3d_import_slicer(filename)
%
% Slicer Datei importieren
% --------------------------------------------------------------------
%
% Format der Datei:
%
% 10 Zeilen: Kommentar
% 1 Zeile : X unit spacing XS
% 1 Zeile : Y unit spacing YS
% 1 Zeile : Z unit spacing ZS
% 5 Zeilen: Kommentar
% 1 Zeile : X Start XA End XE values
% 1 Zeile : Y Start YA End YE values
% 1 Zeile : Z Start ZA End ZE values
%
% Danach hintereinander die Daten getrennt durch Leerzeichn
% bzw. Zeilenumbruch
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fid = fopen(filename,'rt');
% 10 Zeilen einlesen -> erstmal uninteressant
for i=1:10
zeile{i} = fgetl(fid);
end
% Test ob Slicer Datei
if ~strcmp(zeile{1},'"generic metadata"')
dlg=errordlg(['Slicer-Datei ' filename ' ist fehlerhaft!'],'Fehler');
waitfor(dlg);
x=0;y=0;z=0;v=0;
return;
end
% Infodialog 黚er einzulesenden Datensatz
dlginfo = questdlg({['Datei: ' filename],['Titel: ' zeile{10}],['Datentyp: ' zeile{3}],'','Soll der Datensatz eingelesen werden?',''},'Slicer Datei laden...','Ok','Abbruch','');
% Auswerten des Infodialoges
if strcmp(dlginfo,'Abbruch')
x=0;y=0;z=0;v=0;
return;
end
% Einlesen der ersten 3 W鰎ter der 11. ("X unit spacing"), der 12. und 13. Zeile
% Zahl an n鋍hster Stelle der Variable xs zuweisen
% usw.
fscanf(fid,'%s',3);
xs=fscanf(fid,'%f',1);
fgetl(fid);
fscanf(fid,'%s',3);
ys=fscanf(fid,'%f',1);
fgetl(fid);
fscanf(fid,'%s',3);
zs=fscanf(fid,'%f',1);
fgetl(fid);
% 5 Zeilen einlesen -> erstmal uninteressant
fgetl(fid);
fgetl(fid);
fgetl(fid);
fgetl(fid);
fgetl(fid);
% Einlesen der ersten 2 W鰎ter der 19. ("X Start"), der 20. und 21. Zeile
% Zahl an n鋍hster Stelle der Variable xa zuweisen
% ein Wort auslesen "End"
% Zahl an n鋍hster Stelle der Variable xe zuweisen
% Rest der Zeile auslesen
% usw.
fscanf(fid,'%s',2);
xa=fscanf(fid,'%f',1);
fscanf(fid,'%s',1);
xe=fscanf(fid,'%f',1);
fgetl(fid);
fscanf(fid,'%s',2);
ya=fscanf(fid,'%f',1);
fscanf(fid,'%s',1);
ye=fscanf(fid,'%f',1);
fgetl(fid);
fscanf(fid,'%s',2);
za=fscanf(fid,'%f',1);
fscanf(fid,'%s',1);
ze=fscanf(fid,'%f',1);
fgetl(fid);
% x,y,z festlegen
x=xa:xs:xe;
y=ya:ys:ye;
z=za:zs:ze;
w=waitbar(0,'Lade...');
for k=1:length(z)
waitbar(k/length(z));
for j=1:length(y)
for i=1:length(x)
v(j,i,k)=fscanf(fid,'%f',1);
end
end
end
close(w);
% Datei schliessen
fclose(fid);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -