读取文本值到MATLAB变量从ASCII文件
问题描述:
考虑以下文件读取文本值到MATLAB变量从ASCII文件
var1 var2 variable3
1 2 3
11 22 33
我想数字为矩阵,并且列标题加载到将相当于一个变量:
variable_names = char('var1', 'var2', 'variable3');
我不介意在两个文件中拆分名称和数字,但是准备matlab代码文件和评估它们不是一个选项。
注意,有可能是变量的任意数(列)
答
我建议IMPORTDATA的操作是这样的:
d = importdata('filename.txt');
回报是一个结构中名为'data'的成员中的数字字段以及名为'colheaders'的字段中的列标题。
用于导入操纵数据的另一个有用的界面是Statistics Toolbox中的'dataset'类。
答
只要使用textscan不同的格式说明。
fid = fopen(filename,'r');
heading = textscan(fid,'%s %s %s',1);
fgetl(fid); %advance the file pointer one line
data = textscan(fid,'%n %n %n');%read the rest of the data
fclose(fid);
在这种情况下,“标题”将包含每列标题里面,所以你必须将它们转换为字符串单元阵列或者什么,那就是你想要的细胞的细胞阵列。 'data'将是一个单元格数组,它包含您阅读的每列的数值数组,因此您必须将它们组合在一起才能构成一个矩阵。
答
如果文件头的第一行上,然后
A = dlmread(filename,delimString,2,1);
将读取数值数据到矩阵A
然后可以使用
fid = fopen(filename)
headerString = fscanf(fid,'%s/n') % reads header data into a string
fclose(fid)
然后可以使用strtok将headerString分割成单元格数组。是一种方法,我能想到的交易与未知数量的列
编辑固定fscanf函数调用
可以有任意数量的变量(列) – 2008-11-03 21:35:38