Myl0801 2024-04-22 23:30 采纳率: 56.3%
浏览 25
已结题

matlab中计算机格式无效

img

matlab系统提示:计算机格式错误,这是为什么呢?
imageData = fread(fid, [imageSize(1) imageSize(2)], pixelType, byteOrder);,报错代码是这一行


clc;
clear;
folderPath = 'D:\2024\HG\0';
%% 
fileList = dir(fullfile(folderPath, '*.raw'));
%% 
numFiles = length(fileList);
disp(numFiles);
%% 

% 图像尺寸和像素类型
imageSize = [2048 2048];
pixelType = 'uint16';
byteOrder = 'big-endian';
%% 

% 初始化结果矩阵
resultMatrix = zeros(imageSize(1), imageSize(2), numFiles, pixelType);
%% 

for i = 1:numFiles
    % 使用 fullfile 来确保路径正确
    imageFilePath = fullfile(folderPath, fileList(i).name);
    
   % 打开文件
    fid = fopen(imageFilePath, 'r');
    
    % 读取数据
    imageData = fread(fid, [imageSize(1) imageSize(2)], pixelType, byteOrder);
    
    % 关闭文件
    fclose(fid);
    
    % 填充到 resultMatrix
    resultMatrix(:,:,i) = imageData;
end
  • 写回答

5条回答 默认 最新

  • GISer Liu 2024-04-23 00:31
    关注

    该回答引用自GPT-3.5,由博主GISer Liu编写:

    根据你提供的代码和问题描述,报错信息是“计算机格式错误”,这通常是因为 fread 函数中的参数设置有误导致的。
    在你的代码中,使用 fread 读取数据时,你传递了参数 [imageSize(1) imageSize(2)],这个参数是指示 fread 应该读取多少个元素,但是你的代码中指定的是图像的尺寸,而不是元素的数量。此外,pixelTypebyteOrder 参数也需要注意。
    针对这个问题,你可以尝试以下解决方案:

    1. 修正 fread 函数的参数 :确保传递正确的参数给 fread 函数。在你的情况下,应该传递一个标量,代表要读取的元素个数,可以使用 prod(imageSize) 来计算出总的元素个数。
    2. 检查文件格式和大小端设置 :确认文件的格式和字节顺序与你在代码中指定的一致。如果文件格式或字节顺序不正确,也可能导致计算机格式错误的问题。
    3. 检查文件是否存在 :确保文件路径正确,并且确保要读取的文件存在。
      下面是修改后的代码:
      matlabCopy code
      clc; 
      clear; 
      folderPath = 'D:\2024\HG\0';
      fileList = dir(fullfile(folderPath, '*.raw')); 
      numFiles = length(fileList); 
      disp(numFiles); 
      % 图像尺寸和像素类型
      imageSize = [2048 2048];
      pixelType = 'uint16';
      byteOrder = 'b';
      % 初始化结果矩阵
      resultMatrix = zeros([imageSize, numFiles], pixelType);
      for i = 1:numFiles
      % 使用 fullfile 来确保路径正确
      imageFilePath = fullfile(folderPath, fileList(i).name); 
      % 打开文件
      fid = fopen(imageFilePath, 'r'); 
      % 读取数据
      numElements = prod(imageSize);
      imageData = fread(fid, numElements, pixelType, byteOrder); 
      % 关闭文件
      fclose(fid); 
      % 填充到 resultMatrix
      resultMatrix(:,:,i) = reshape(imageData, imageSize);
      end
      
      这个修改后的代码修复了 fread 函数的参数问题,并且确保了文件格式和字节顺序设置正确。

    如果该回答解决了您的问题,请采纳!如果没有,请私信联系或评论您的疑惑

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 5月1日
  • 已采纳回答 4月23日
  • 修改了问题 4月22日
  • 创建了问题 4月22日