Matlab小技巧

根据文件修改时间进行排序

在 MATLAB 中,您可以使用 dir 函数获取文件的列表,并包含它们的元数据,如文件名、文件大小、修改日期等。获取到这些信息后,您可以使用 datetime 函数将日期字符串转换为 datetime 对象,然后使用这些对象对 fileList 进行排序。这里是一个按日期排序文件列表的例子:

% 获取文件夹中的所有.srd文件
fileList = dir(fullfile('file_path', '*.srd'));

% 将日期转换为datetime对象
dates = datetime({fileList.date});

% 获取排序的索引(按日期)
[~,sortedIndex] = sort(dates);

% 使用排序的索引来排序fileList
sortedFileList = fileList(sortedIndex);

上面的代码首先使用 dir 函数获取特定文件夹中所有 .srd 文件的列表。然后,它将这些文件的日期转换为 datetime 对象数组。接下来,sort 函数用来获取按日期排序的索引,这些索引随后用于对原始 fileList 数组进行排序,得到 sortedFileList

最后,sortedFileList 将是一个包含按日期排序的文件的数组,您可以按照您的需要使用这个排序后的列表。

保存画图为图片

保存和复制绘图时保留最少的空白

摘录自:保存和复制绘图时保留最少的空白 - MATLAB & Simulink (mathworks.com)
在保存或复制绘图内容时,使空白最小化的方法之一是使用坐标区工具栏,将鼠标悬停在坐标区右上角时会出现该工具栏。另一种方法是使用 exportgraphicscopygraphics 函数,它们具有更大的灵活性。
注意
以下示例使用了 R2020a 中新增的 exportgraphicscopygraphics 函数。如果您使用的是较早的版本,请参阅保存绘图时保留最少的空白 (19b)

保存或复制单一绘图

使用标题和颜色栏创建 peaks 函数的等高线图。

contour(peaks)
colorbar
title('Peaks Function')

将鼠标悬停在坐标区工具栏中的导出按钮 attach/fa54d41049b54c1920375caf252ee62c_MD5.png 上并选择下拉列表中的第一项,将绘图保存到文件。如果要将绘图的内容复制到剪贴板,请选择下拉列表中的第二项或第三项。第二项将内容复制为图像,第三项将内容复制为向量图形。保存或复制的内容将围绕标题、坐标区和颜色栏精确裁剪。

attach/a99d86215045016d8f9b7210e3f2ee21_MD5.png

也可以使用 exportgraphics 函数保存内容,此函数从 R2020a 开始提供。此函数围绕您的内容提供相同的精确裁剪,还提供了其他选项。例如,您可以保存图像文件并指定分辨率。

ax = gca;
% Requires R2020a or later
exportgraphics(ax,'myplot.png','Resolution',300) 

copygraphics 函数提供了将内容复制到剪贴板的类似功能。

ax = gca;
% Requires R2020a or later
copygraphics(ax,'Resolution',300)

保存或复制图窗中的多个绘图

从 R2019b 开始,您可以使用 tiledlayout 函数在图窗中创建分块图。该函数具有用于最小化绘图周围空间的选项。(如果您使用的是较早的版本,您可以使用 subplot 函数来创建分块图。不过,subplot 函数没有用于控制绘图周围空间的选项。)
通过调用 tiledlayout 函数,创建一个 2×2 分块图布局。要最小化绘图之间的空间,请将 'TileSpacing' 名称-值对组参数设置为 'compact'。要使布局周围的空间最小化,请将 'Padding' 名称-值对组参数设置为 'compact'。下一步,调用 nexttile 函数创建第一个坐标区,并调用 plot 函数在坐标区中绘图。然后再创建三个坐标区和绘图。

% Requires R2019b or later
t = tiledlayout(2,2,'TileSpacing','Compact','Padding','Compact');
nexttile
plot([0 1])
nexttile
plot([1 0])
nexttile
plot([0 1 0 1])
nexttile
plot([1 0 1 0])

attach/b31a1e2ac2c276e1d1b510ed12e8f25c_MD5.png

通过将分块图布局 (t) 传递给 exportgraphics 函数,将布局另存为 PDF 文件。在本例中,使用透明背景保存 PDF。

% Requires R2020a or later
exportgraphics(t,'fourplots.pdf','BackgroundColor','none')

也可以使用 copygraphics 函数,将布局复制到剪贴板。

% Requires R2020a or later
copygraphics(t,'BackgroundColor','none')

保存图片只保留数据图区域,不包括坐标轴等信息

通过以下命令关闭坐标轴、颜色栏等显示信息,并保存图片呢

% 关闭坐标轴的显示
axis off;
% 关闭颜色栏
colorbar off;
ax = gca;
% Requires R2020a or later
copygraphics(ax,'Resolution',300)