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

📄 v3d_import_pulseekko.m

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