📄 v3d_import_pulseekko.m
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [x,y,z,v] = v3d_import_pulseekko(filename)
%
% Pulse Ekko HDF Datei importieren
% --------------------------------------------------------------------
%
% Format der Datei: bin鋜
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Opening HDF Files
sd_id = hdfsd('start',filename,'read');
% Wenn HDF Datei ge鰂fnet werden konnte
if (sd_id~=-1)
% Retrieving Information About an HDF File
% Anzahl der Datens鋞ze + Anzahl globale Attribute
[ndatasets, nglobal_attr, status] = hdfsd('fileinfo',sd_id);
% Retrieving Attributes from an HDF File
% globale Attribute auslesen, wenn vorhanden
for i=0:nglobal_attr-1
[attr{i+1}, status] = hdfsd('readattr', sd_id, i);
end
% wenn genau 1 Datensatz vorhanden (bei Ekko so)
if ndatasets==1
% Selecting Data Sets in HDF Files
sds_id = hdfsd('select',sd_id,0); % ersten DS ausgew鋒lt
% Wenn Auswahl des ersten DS erfolgreich
if (sds_id~=-1)
% Getting Information About a Data Set
[ds_name, ds_ndims, ds_dims, ds_type, ds_attr, status] = hdfsd('getinfo',sds_id);
% Retrieving Data Set Attributes
for i=0:ds_attr-1
[ds_attr_name{i+1}, status] = hdfsd('readattr', sds_id, i);
end
% 3 Dimensionen?
if (ds_ndims==3)
% Infodialog 黚er einzulesenden Datensatz
dlginfo = questdlg({['Datei: ' filename],['Datensatz: ' ds_name],['Dimension: ' num2str(ds_dims(1)) 'x' num2str(ds_dims(2)) 'x' num2str(ds_dims(3)) ],'','Soll der Datensatz eingelesen werden?',''},'HDF Pulse Ekko Datei laden...','Ok','Abbruch','');
% Auswerten des Infodialoges
if strcmp(dlginfo,'Abbruch')
return;
end
% Reading Data from an HDF File
ds_start = zeros(1,ds_ndims); % Creates the vector [0 0]
ds_stride = [];
ds_edges = ds_dims;
[ds_data, status] = hdfsd('readdata',sds_id,ds_start,ds_stride,ds_edges);
% Voreinstellungen abfragen
prompt={'Punktabstand','Punktoffset','Profilabstand','Profiloffset','Tiefenskala'};
def={'0.2','0','0.1','0','0.1'};
dlgTitle='Voreinstellungen';
lineNo=1;
AddOpts.Resize='off';
AddOpts.WindowStyle='modal';
AddOpts.Interpreter='tex';
answer=inputdlg(prompt,dlgTitle,lineNo,def,AddOpts);
if length(answer)==5
punktabstand=str2num(answer{1});
punktoffset=str2num(answer{2});
profiloffset=str2num(answer{4});
profilabstand=str2num(answer{3});
depthscale=str2num(answer{5});
else
return;
end
% double statt int
v=double(ds_data);
% Zeilen tauschen von v
v=permute(v,[3 2 1]);
% Einstellungen ber點ksichtigen
x=0:punktabstand:(ds_dims(2)-1)*punktabstand;
y=0:profilabstand:(ds_dims(1)-1)*profilabstand;
x=x+punktoffset;
y=y+profiloffset;
z=ds_dims(3):-1:1;
z=z*depthscale;
else
dlg=errordlg(['Pulse Ekko Datei "' filename '" enth鋖t keinen 3D-Datensatz!'],'Fehler');
waitfor(dlg);
end
% Closing HDF Data Sets
status = hdfsd('endaccess',sds_id);
else
dlg=errordlg(['Pulse Ekko Datei "' filename '" ist fehlerhaft!'],'Fehler');
waitfor(dlg);
end
else
dlg=errordlg(['Pulse Ekko Datei "' filename '" enth鋖t mehr als einen Datensatz!'],'Fehler');
waitfor(dlg);
end
% Closing an HDF File
status = hdfsd('end',sd_id);
else
dlg=errordlg(['Pulse Ekko Datei "' filename '" konnte nicht ge鰂fnet werden!'],'Fehler');
waitfor(dlg);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -