使用imagesc同时保存多张图的方法

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容