⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 v3d_import_slicer.m

📁 matlab 三维显示。所有代码都有。可以显示三维网格。
💻 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 + -