我有这段代码,想在一个制表符分隔的txt文件中写一个数组:
fid = fopen('oo.txt', 'wt+');
for x = 1 :length(s)
fprintf(fid, '%s\t\n', s(x)(1)) ;
end;
fclose(fid);
但是我收到了这个错误:
Error: ()-indexing must appear last in an index expression.
我该怎么称呼s(x)(1)? s是一个数组
s <2196017x1 cell>
当我使用这段代码时,我没有得到任何错误,但是给我回复了一些不是文字的字符。
fprintf(fid, '%s\t\n', ( s{x}{1})) ;
答案 0 :(得分:1)
使用MATLAB,您无法在不首先将其分配给临时变量的情况下使用()
立即索引函数的结果(尽管Octave 允许这样做)。这是因为当你允许这种情况时会发生一些歧义。
tmp = s(x);
fprintf(fid, '%s\t\n', tmp(1)) ;
There are some ways around this but they aren't pretty
目前还不清楚您的数据结构到底是什么,但看起来s
是一个单元格,所以您应该使用{}
索引来访问它的内容
fprintf(fid, '%s\t\n', s{x});
更新
如果您尝试从输入文件中读取单个单词,然后将其写入制表符分隔文件,我可能会执行以下操作:
fid = fopen('input.txt', 'r');
contents = fread(fid, '*char')';
fclose(fid)
% Break a string into words and yield a cell array of strings
words = regexp(contents, '\s+', 'split');
% Write these out to a file separated by tabs
fout = fopen('output.tsv', 'w');
fprintf(fout, '%s\t', words{:});
fclose(fout)