优化这段代码imgfilename1='C:\Users\86182\Desktop\tif\QB2013.dat'; imgfilename2='C:\Users\86182\Desktop\tif\SV2018.dat'; fid1=fopen(imgfilename1,'r'); data=multibandread(imgfilename1,[1989,2126,4],'int16',0,'bsq','ieee-le');%lines,samples,bands data=double(data); B1=data(:,:,1); G1=data(:,:,2); R1=data(:,:,3); C1=data(:,:,4); data=cat(4,B1,C1,R1,G1); %数值转换为0-255的整型用于显示 data_unit8=data; for k=1:4 min_val=min(data(:,:,k)); max_val=max(data(:,:,k)); for i=1:1989 for j=1:2126 data_unit8(i,j,k)=uint8((data_unit8(i,j,k)-min_val)/(max_val-min_val)*255); end end end data_show=data; for k=1:4 min_val=min(data(:,:,k)); max_val=max(data(:,:,k)); for i=1:1989 for j=1:2126 data_show(i,j,k)=uint8((data_show(i,j,k)-min_val)/(max_val-min_val)*255); end end end %432波段显示 im1=data_show(:,:,2:4); im1=uint8(im1); figure(1) imshow(im1,[min(im1(:)),max(im1(:))]) title('Quickbird影像432波段显示'); im2=data_show(:,:,2:4); im2=uint8(im2); figure(2) imshow(im2,[min(im2(:)),max(im2(:))]) title('高景影像432波段显示');
时间: 2024-03-07 09:48:27 浏览: 58
首先,可以将数值转换为0-255的整型用于显示的代码部分优化为:
```
data_unit8 = uint8((data-min(data(:))) / (max(data(:))-min(data(:))) * 255);
```
这样可以避免使用循环,提高代码运行效率。
其次,可以将432波段显示的代码部分进行优化,避免重复代码。可以将im1和im2的定义整合到一起,并且将imshow和title函数的部分封装成一个函数,避免重复代码。具体代码如下:
```
im = data_show(:,:,2:4);
im = uint8(im);
show_image(im, 'Quickbird影像432波段显示', 1);
show_image(im, '高景影像432波段显示', 2);
function show_image(im, title_str, fig_num)
figure(fig_num);
imshow(im, [min(im(:)), max(im(:))]);
title(title_str);
end
```
这样可以使代码更简洁、易读,同时提高运行效率。
阅读全文