Matlab错误:对strsplit的调用无效

时间:2015-07-02 16:32:25

标签: string matlab octave file-read

我试图从一个字符串中划分出一组三个数字。这是我的代码:

tline =fgetl(fid);

in_points=fgetl(fid);
B = strrep(in_points,' ',' ')

C = char(strsplit(B));

points = reshape(str2num(C), 3, [])'

我的输入文件如下所示:

output 1 for p=0.01

8 8 1 4 15 1 5 17 1 17 17 1 13 1 2 10 3 2 16 4 2 18 6 2 6 3 3 9 3 3 9 7 3 2 13 3 7 18 3 19 20 3 12 4 4 1 6 4 12 10 5 9 12 5 8 19 5 18 4 6 13 9 6 12 16 6 6 8 7 17 12 7 18 6 8 7 15 8 8 8 9 3 19 9 17 19 9 20 2 10 20 4 10 3 8 10 11 7 11 10 12 11 4 14 11 19 3 12 4 11 12 6 11 12 11 13 12 19 14 12 13 15 12 14 18 12 3 19 12 1 3 13 9 9 13 20 10 13 5 13 13 4 17 13 15 16 14 11 18 14 20 3 15 6 13 15 7 16 15 12 17 15 9 1 16 11 1 16 9 5 16 11 12 16 11 16 16 20 19 16 19 13 17 16 16 17 5 19 17 19 1 18 20 10 18 13 16 18 6 1 19 16 4 19 20 7 19 13 11 19 2 19 19 1 6 20 10 14 20 16 15 20 18 16 20 7 20 20

我想将数字分开为

8 8 1

4 15 1

5 17 1

等等。当我以八度音程运行此代码时,它显示错误。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

你的代码对我来说似乎一般都很好,尽管正如Hoki的评论中提到的那样,可能有一种更清洁的方法。

唯一的错误是你从未真正读过数据的第一行。第一个import zipfile, sys, os, zf = zipfile.ZipFile(sys.argv[1], 'r') for m in zf.infolist(): data = zf.read(m) # extract zipped data into memory # convert unicode file path to utf8 disk_file_name = m.filename.encode('utf8') dir_name = os.path.dirname(disk_file_name) try: os.makedirs(dir_name) except OSError as e: if e.errno == os.errno.EEXIST: pass else: raise except Exception as e: raise with open(disk_file_name, 'wb') as fd: fd.write(data) zf.close() 命令读入标题行。第二个读取标题和数据之间的空白行,而不是您可能想要的空白行fgetl

如果您在in_pointsfgetl行之间添加另一个tline,那么它对我有用。

in_points

正如Hoki所提到的,>> points points = 8 8 1 4 15 1 5 17 1 17 17 1 13 1 2 10 3 2 16 4 2 18 6 2 6 3 3 9 3 3 9 7 3 ... 行只会用空格替换空格。不确定你在那里做什么。