1. Matlab读取txt文件
fruits.txt文件内容如下,主要是一列字符型单词:
apple
pear
watermelon
orange
banana
1.1. 用fopen和textscan读取
fid = fopen('fruits.txt','r');
A = textscan(fid,'%s');
fclose(fid)
得到的A是一个大小为5×1的元胞数组(cell array),fopen第二个参数对应相应的操作,r: read, w: write, a: add 等。
1.2. 用importdata读取
A = importdata('fruits.txt');
这种方法写起来就比较简单了,同样,得到的A也是一个大小为5×1的元胞数组。
B = A(i); % 得到的B会是一个1×1的cell array
B = A{i}; % 得到的B是一个char类型的值,大小由单词长度决定
2. Matlab 写 txt
2.1. dlmwrite方法
dlmwrite('fruit.txt', A, 'delimiter', '','precision', 6);
该方法需要先将元胞数组转化为矩阵。
元胞数组转化为矩阵可以用函数 cell2mat(A),但是用上面的数据直接转会报错:
串联的矩阵的维度不一致。
这是因为A中的数据是字符型的,每个单词的长度不一样,导致每一行的维度不一致,所以此处不适用。
2.2. fprintf方法
fileID = fopen('fruit.txt','a'); % w:write,覆盖原有内容 a:add,在原有内容后面增加
for i = 1:6
fprintf(fileID, '%s\n', A{i}); % \n 换行
end
fclose(fileID);
fopen操作如果文件夹中没有该文件,就会新建。
此时如果用记事本直接打开fruit.txt,会看到所有单词都在同一行,应该是记事本没有识别换行符,但实际上fruit.txt中的元素是换行了的。可以用notepad++或者其他编程类的软件打开查看。