Matlab 保存和加载mat文件时出现问题

Matlab 保存和加载mat文件时出现问题,matlab,octave,Matlab,Octave,我正在尝试将一大组图像合并到一个.mat文件中。图像为512x512,灰度。有31张这样的照片 我执行了以下操作来创建matfile并保存它: fid1 = fopen('C:\Users\...\MATLAB\fileList_IMG.txt','r'); PATH_IMG = 'C:\Users\...\IMAGES\'; PATH_MAT = 'C:\Users\...\IMAGES\MATfiles\'; IMG_DATA = zeros(512, 512

我正在尝试将一大组图像合并到一个.mat文件中。图像为512x512,灰度。有31张这样的照片

我执行了以下操作来创建matfile并保存它:

    fid1 = fopen('C:\Users\...\MATLAB\fileList_IMG.txt','r');
    PATH_IMG = 'C:\Users\...\IMAGES\';
    PATH_MAT = 'C:\Users\...\IMAGES\MATfiles\';
    IMG_DATA = zeros(512, 512, 31);
    while ~feof(fid1)
        folderName = fgetl(fid1);

        for i=1:31
            fileName = sprintf('%s%s\\%s\\%s_%02d.png',PATH_IMG, folderName, folderName, folderName, i);
            tempImg = imread(fileName);
            IMG_DATA(:,:,i) = tempImg(:,:,1);
        end

        save_fileName = sprintf('%s%s', PATH_MAT, folderName);
        save(save_fileName, 'IMG_DATA');
    end
我执行了以下操作以加载MAT文件:

     fileName = 'C:\Users\...\IMAGES\MATfiles\balloon.mat';
     NEWIMG_DATA = load(fileName);
假设为了可读性,这是新的IMG数据

我注意到这些值是不同的!它不像是按比例放大的值,因为IMG_数据中170和172的值对应于新IMG_数据中的3709和3666。IMG_数据和新IMG_数据均为双数据类型。如果在创建.mat文件之前将IMG_数据强制到uint8,则新IMG_数据的大多数值为255

以下是将IMG_数据保存为matfile之前的一些示例: IMG_数据(400400,4:10)

ans(:,:,1)= 133

ans(:,:,2)= 141

ans(:,:,3)= 142

ans(:,:,4)= 145

ans(:,:,5)= 156

ans(:,:,6)= 157

ans(:,:,7)= 158

以下是加载后的新IMG数据示例: 新IMG_数据。IMG_数据(400400,4:10)

ans(:,:,1)= 16366

ans(:,:,2)= 18216

ans(:,:,3)= 19648

ans(:,:,4)= 19578年

ans(:,:,5)= 19203年

ans(:,:,6)= 18682

ans(:,:,7)= 17123


我希望能够正确保存和加载.mat文件。我该怎么做?

答案在上面的评论中。ypnos指出,数据为16个基点,而不是我假设的8个基点

您需要创建一个非常简短的代码示例来再现此错误,因为MATLAB在加载/保存时出错是非常罕见的。在代码段中显示保存前的值以及保存后的值。如果这是一个真正的MATLAB错误,您应该能够以一种非常简单的方式再现这是来自洞穴数据库的多光谱图像吗?这些图像是16位的,所以预计它们的范围是0到65535。您应该尝试tempImg=double(imread(fileName))/255。;在阅读图像时,请尝试使用
im2double
?您使用的是什么版本的Matlab?在首选项中,保存mat文件的格式是什么?如果更改这些设置,是否会影响保存的数据?@ypnos:Yes。谢谢你指出这是16个基点。当我在IrfanView中打开图像时,我一直得到512x512x8BPP。所以我假设它是8BPP。无论如何,我在读回matfile时就是这样做的:new\u IMG\u DATA=uint8(new\u IMG\u DATA./255)@伊普斯,你造了沙鼠!令人惊叹的!我已经用了一段时间了,它非常好!