要求包含八度字符串的输入文件
Asking for input file that contain string in octave
我正在尝试从 csv 文件加载数据。我被告知使用 textscan
,但是当我尝试使用 csvread
加载文件时,我收到错误消息“在第 1 行第 16 列附近未定义”。当尝试使用类似的方法(例如 fileread
和 textread
.
时,出现相同的错误,但列位置不同
这是 csv 文件的 link
https://drive.google.com/open?id=0ByD1GZqyS54ZV3ZoVFltYzZ6eE0
这是 picture of the file.
我知道简单地删除其他不需要的内容会更容易,因为我只需要 E、F、G 和 K 列的数据,然后可以使用 dlmread
或 csvread
在这些数值上。尽管如此,这似乎并不应该那么难。你能帮我理解如何使用 MATLAB 或 Octave 从文件中加载字符串数据吗?
更新 08/20/17 (UTC+7)
感谢您的回答,特别是来自信息(这是用户标识对吗?)
我认为问题可能是由第一行有 26 个单元格而其他 4 行只有 20 个单元格引起的,所以我决定删除 K 列之后的数据,我们有 11 列然后 运行 :
fid=fopen('tesdata.dat'); %i change the data in csv to dat file
c=textscan(fid,'%f%s%s%s%f%f%d8%s%s%s%f');
fclose(fid);
这适用于我的情况,所以我认为问题可能在于不同的列大小。好吧,我确实认为如果 csv 中的文件带有 csvread
,这可能会起作用
[num,txt,raw] = xlsread(文件名)
你可以用这个。使用 raw
中存在的数据
原始{:,5},原始{:,6},原始{:,7},原始{:,11}
正是您所需要的
这里有一个 textscan
解决方案,可以将每一列作为字符串抓取。
fname = 'katalogisc.csv'; % your file
fid = fopen(fname,'r');
numCols = 'Z'-'A'+1; % i.e. 26 columns in this case
scanStr = repmat('%s',1, numCols); % interpret each column as a string
columnsOfStrings = textscan(fid, scanStr,'delimiter',','); % split strings by comma (,)
fclose(fid);
我喜欢 xlsread
解决方案,但在我的机器上遇到了 'File is not recognized format' 错误。
我正在尝试从 csv 文件加载数据。我被告知使用 textscan
,但是当我尝试使用 csvread
加载文件时,我收到错误消息“在第 1 行第 16 列附近未定义”。当尝试使用类似的方法(例如 fileread
和 textread
.
这是 csv 文件的 link https://drive.google.com/open?id=0ByD1GZqyS54ZV3ZoVFltYzZ6eE0 这是 picture of the file.
我知道简单地删除其他不需要的内容会更容易,因为我只需要 E、F、G 和 K 列的数据,然后可以使用 dlmread
或 csvread
在这些数值上。尽管如此,这似乎并不应该那么难。你能帮我理解如何使用 MATLAB 或 Octave 从文件中加载字符串数据吗?
更新 08/20/17 (UTC+7)
感谢您的回答,特别是来自信息(这是用户标识对吗?)
我认为问题可能是由第一行有 26 个单元格而其他 4 行只有 20 个单元格引起的,所以我决定删除 K 列之后的数据,我们有 11 列然后 运行 :
fid=fopen('tesdata.dat'); %i change the data in csv to dat file
c=textscan(fid,'%f%s%s%s%f%f%d8%s%s%s%f');
fclose(fid);
这适用于我的情况,所以我认为问题可能在于不同的列大小。好吧,我确实认为如果 csv 中的文件带有 csvread
,这可能会起作用[num,txt,raw] = xlsread(文件名)
你可以用这个。使用 raw
中存在的数据原始{:,5},原始{:,6},原始{:,7},原始{:,11}
正是您所需要的
这里有一个 textscan
解决方案,可以将每一列作为字符串抓取。
fname = 'katalogisc.csv'; % your file
fid = fopen(fname,'r');
numCols = 'Z'-'A'+1; % i.e. 26 columns in this case
scanStr = repmat('%s',1, numCols); % interpret each column as a string
columnsOfStrings = textscan(fid, scanStr,'delimiter',','); % split strings by comma (,)
fclose(fid);
我喜欢 xlsread
解决方案,但在我的机器上遇到了 'File is not recognized format' 错误。