首页 > 解决方案 > csv文件的Matlab fopen错误

问题描述

我只是想使用 textscan 函数将 csv 文件导入 Matlab。但是每次我运行程序时它总是抛出这个错误

使用 textscan 时出错 无效的文件标识符。使用 fopen 生成有效的文件标识符。

但是正如您在下面的代码中看到的那样,我正在使用 fopen 来准备文件以供 textscan 使用。

S = 'Proto2.csv';
fidi = fopen(S);
C = textscan(fidi, '%f%s%f%f%f%f%f%f%s%f%f%f%f%f%f%f%f%f%f%f%f%f%f', 'Delimiter','\n', 'HeaderLines',11, 'CollectOutput',1);

之后我使用 C 从 csv 文件中获取我需要的数据

标签: matlabcsv

解决方案


通常,在对文件句柄进行读取和/或写入操作之前,您必须确保fopen函数返回的句柄有效。来自 Matlab 的官方文档

fileID = fopen(filename)打开文件 filename 进行二进制读取访问,并返回一个等于或大于 3 的整数文件标识符。MATLAB® 保留文件标识符 0、1 和 2 用于标准输入、标准输出(屏幕) 和标准误差。

如果 fopen 无法打开文件,则 fileID 为 -1。

fidi在继续之前检查您的变量值textscan,我很确定它等于-1. 发生这种情况要么是因为找不到文件(如果您没有指定完整的绝对路径,Matlab 会在当前工作目录中搜索它)或因为文件上有共享锁(因此,请确保它不是其他应用程序在您尝试阅读时使用)。


推荐阅读