matlab的imagesc函数可以把csv生成矩阵图
imagesc生成的图
当一个文件夹下有多个csv时,可以写个脚本进行批量处理,如下提供了两种方案
1. 同时弹出多个影像
会在运行结束时弹出所有生成的影像并且保存在csv同样的目录下
但是不适用于100人以上的情况,内存吃不消
cd('yourPath'); % 切换到文件夹所在位置
files = dir('*csv*');
csvs = {files.name};
for i=1:length(csvs)
file_cell = csvs(i);
filename = file_cell{1};
data = csvread(filename);
figure, imagesc(data)
colorbar
title(filename);
filename = filename(1:(end-4));
% disp(filename)
saveas(gcf, strcat(filename, '.jpg'));
end
2. 适用于大样本的情况
上面的脚本会不停弹出新的窗口,造成内存负担,越到后面越慢
经过修改后的脚本只会弹出一个图出来,运行速度更快也不会造成内存泄漏
cd('yourPath'); % 切换到文件夹所在位置
files = dir('*csv*');
csvs = {files.name};
lower = 0; % 控制从第几个影像开始处理,适用于多次处理
upper = 18000;
for i=1:length(csvs)
if (i > lower & i < upper)
file_cell = csvs(i);
filename = file_cell{1};
data = csvread(filename);
%figure('visible','off') %不弹出图像
fig = imagesc(data);
colorbar
title(filename)
filename = filename(1:(end-4));
% disp(filename)
saveas(fig, strcat(filename, '.jpg'));
disp(i); % 处理完第几个影像
end
end
经过测试发现加上不弹出影像的语句会造成内存泄漏,所以先注释掉
参考速度:每秒一个,MBP M1,rosseta运行matlab
网友评论