MATLAB的功能全面且复杂,总有一些经常能用到的固定功能代码,记在这里,方便查询!
MATLAB 判断不存在文件夹 则创建文件夹
savepath = uigetdir;
if(~exist([savepath,'\ISAR_RayTraceResult'], 'file'))
mkdir([savepath,'\ISAR_RayTraceResult']);
end
if(~exist([savepath,'\ISAR_ImagingResult'], 'file'))
mkdir([savepath,'\ISAR_ImagingResult']);
end
(2019.09.25更新)
读取文件夹内所有图像,并批量处理!
pathname = 'C:\Users\本地用户\Desktop\图像';
classfileName = strcat(pathname,'\', '*.jpg');
sonfiles = dir(fullfile(classfileName));
size1 = size(sonfiles);
imgNames = sonfiles(3 : size1(1));
imgNum = size(imgNames, 1);
for ii = 1:imgNum
imgName = [pathname, '\', imgNames(ii, 1).name];
img = imread(imgName);
% 处理程序
% 处理程序
end
(2019.09.26更新)
无边框保存当前显示图片
我们经常用matlab的 imwrite 语句保存图像,这样保存的图像尺寸大小与数据尺寸一致,没有白色边框。但是 imwrite 往往不能满足我们的要求,比如显示了一个三维图,需要保存成二维效果图,再比如用 imagese 语句将灰度图显示成了彩图。如果在fig图上直接另存为 bmp 等格式图像,保存的图像会有很宽的白边。虽然也能用画图等工具去除白边,但是如果要批量保存,工作量可想而知!这里提供一个无边框保存当前显示图片的方法,可以解决这些问题!
f1 = figure(1); % 获取句柄
clf(f1) % 清除当前显示内容
imshow(img); % 显示图片 % imagesc(img)
set(0,'CurrentFigure',f1);
set(gcf,'PaperPositionMode','auto');
set(gca,'position',[0,0,1,1]);
set(gcf,'position',[1, 1, width, Heigth]); % width:图片列数 Heigth:图片行数
ImgCCD = getframe(f1); % 获取当前显示内容
ImgCCD = ImgCCD.cdata;
imwrite(ImgCCD, saveFile); % 保存
(2019.10.10更新)
坐标轴标签旋转
[X,Y] = meshgrid(-5:0.4:5,-5:0.4:5);
Z = tanh(X);
figure;
surface(X,Y,Z);
view(3);
grid on
grid minor
xl = xlabel('Re(z)');
yl = ylabel('Im(z)');
zlabel('Re(tanh(z))');
set(xl, 'Rotation', 30) % 旋转
set(yl, 'Rotation', -30) % 旋转