Welcome to exchange and study!
The following code is based on Matlab 2018b.
%% ==================================================
%% save the results
[FileName, PathName] = uiputfile({'*.img';'*.mat';'*.m';'*.slx';'*.*'},'Save The Result Images As');
% 对文件保持窗口选择是否保存进行判断
if isequal(FileName,0) || isequal(PathName,0)
disp('User pressed cancel')
else
disp(['Save The Result Images As: ', fullfile(PathName, FileName)])
savefile_name=strcat(PathName,FileName);
% disp('Save The Result Images As:');
% disp(savefile_name);
% 利用matlab自带multibandwrite函数将矩阵转换成tif文件格式,第一个参数gt是需要写入的矩阵,第二参数为存储路径和命名
multibandwrite(result_img,char(savefile_name),'bsq','machfmt','ieee-le','precision','double'); % 注意:此处表名,gt为double精度的tif格式
%%============Here is the HDR file generation program=================
% generate *.hdr file
h1='ENVI';
h2='description = { Binary Data }';
h3=['samples = ',num2str(cols)]; % 使用矩阵形式,可以将空格写入TXT文本文件中,使用strcat则无法写入空格
h4=['lines = ',num2str(rows)];
h5=['bands = ',num2str(bands)];
h6='header offset = 0';
h7='file type = ENVI Standard';
h8='data type = 5';
h9='interleave = bsq';
h10='sensor type = Unknown';
h11='byte order = 0';
h12='wavelength units = Unknown';
h={};
h={h1;h2;h3;h4;h5;h6;h7;h8;h9;h10;h11;h12};
if ~isempty(strfind(FileName,'.'))==0;
fid=fopen(strcat(PathName,strcat(FileName,'.hdr')),'wt');
else
hdr_nam=FileName(1:end-4);
hdr_name=strcat(hdr_nam,'.hdr');
fid=fopen(strcat(PathName,hdr_name),'wt');
end
for i=1:12;
fprintf(fid,'%s\n',h{i});
end
fclose(fid);
% save all results
save(strcat(PathName,'result_BilaterFilter.mat'))
end
%% ===================================================