读取行 1 上的字段 1 时,无法解析 "Numeric" 字段。 实际文本: ""","D01T02","D03","D05T06","D07T08","D09","D10T12","D13T15","D16","D17T18","D19","D20","D21","D22","D23","D24","D25","D26","D27","D28","D29","D30","D31T33","D35","D36T39","D41T43","D45T47","D49","D50"..." 应为: 数字或文字 "NaN"、"Inf"。(可能有符号,不区分大小写) 出错 csvread (第 53 行) m=dlmread(filename, ',', r, c); %#ok<*DLMRD> 出错 untitled5 (第 13 行) data = csvread(filePath);
时间: 2023-08-03 14:03:52 浏览: 727
Elasticsearch(015):es常见的字段映射类型之数字类型(numeric)
5星 · 资源好评率100%
根据你提供的错误信息,看起来在读取CSV文件时遇到了问题。错误提示指出无法解析 "Numeric" 字段,这可能是由于CSV文件中包含了非数字的值。
要解决这个问题,你可以使用 MATLAB 中的 `readtable` 函数来读取 CSV 文件,并指定合适的选项来处理非数字值。以下是修改后的代码示例:
```matlab
% 指定文件夹路径
folderPath = '/path/to/folder'; % 替换为你的文件夹路径
% 获取文件夹及其子文件夹中的所有CSV文件
fileList = dir(fullfile(folderPath, '**/*.csv'));
% 遍历每个CSV文件并进行转换
for i = 1:numel(fileList)
% 获取当前文件的完整路径
filePath = fullfile(fileList(i).folder, fileList(i).name);
% 使用 readtable 函数读取 CSV 文件
opts = detectImportOptions(filePath);
opts = setvartype(opts, 'double', 'TextType', 'string');
tableData = readtable(filePath, opts);
% 提取前50行数据
data = tableData{1:50, :};
% 将MAT文件保存到同一目录下,文件名与CSV文件相同
[~, baseFileName, ~] = fileparts(filePath);
save(fullfile(fileList(i).folder, [baseFileName '.mat']), 'data');
% 可选:显示转换进度
disp(['Converted file ' num2str(i) ' of ' num2str(numel(fileList))]);
end
```
在这个修改后的代码中,我们使用 `readtable` 函数来读取 CSV 文件,并使用 `detectImportOptions` 函数检测文件的导入选项。然后,我们使用 `setvartype` 函数将非数字的值类型设置为字符串类型,以避免无法解析的错误。
接下来,我们提取前50行数据,并将其保存为MAT文件,方法与之前相同。
请确保将代码中的 `/path/to/folder` 替换为实际的文件夹路径,并注意MATLAB中的路径分隔符是 `/`。同样,如果你想要显示转换进度,可以取消注释 `disp` 行。
阅读全文