在MATLAB中如何按照一定的语法从文件中读取数据

在MATLAB中如何按照一定的语法从文件中读取数据,matlab,file-io,scanf,Matlab,File Io,Scanf,如何将以下数据读入MATLAB矩阵。以下数据存储在一个文件中 5.1,3.5,1.4,0.2,Point1 4.9,3.0,1.4,0.2,Point2 4.7,3.2,1.3,0.2,Point3 4.6,3.1,1.5,0.2,Point4 5.0,3.6,1.4,0.2,Point5 5.4,3.9,1.7,0.4,Point6 4.6,3.4,1.4,0.3,Point7 5.0,3.4,1.5,0.2,Point8 4.4,2.9,1.4,0.2,Point9 4.9,3.1,1.5,

如何将以下数据读入MATLAB矩阵。以下数据存储在一个文件中

5.1,3.5,1.4,0.2,Point1
4.9,3.0,1.4,0.2,Point2
4.7,3.2,1.3,0.2,Point3
4.6,3.1,1.5,0.2,Point4
5.0,3.6,1.4,0.2,Point5
5.4,3.9,1.7,0.4,Point6
4.6,3.4,1.4,0.3,Point7
5.0,3.4,1.5,0.2,Point8
4.4,2.9,1.4,0.2,Point9
4.9,3.1,1.5,0.1,Point10
5.4,3.7,1.5,0.2,Point11
4.8,3.4,1.6,0.2,Point12
它的四个浮点数用逗号分隔,后跟一个字符串

我试图使用下面的代码,但它似乎不能正常工作

fid = fopen("file.txt", 'r');
我想将每行中的四个浮点值放入numberoflines*4矩阵,并将每行中的字符串放入字符串数组

fid = fopen('iris.data');

tline = fgetl(fid);
while ischar(tline)
    disp(tline)
    tline = fgetl(fid);
    scanf(tline,'%f,%f,%f,%f,%15c');
end

fclose(fid);
我是Matlab新手,我在这里做了一些非常错误的事情,所以请容忍我

谢谢, 萨加尔。

试试这句话:

vec = sscanf( tline( 1:end ), '%f,%f,%f,%f,%*s' )

应该工作,关于fopen(“file.txt”,“r”)它们不应该都是
而不是
?fopen工作正常,我得到了一个有效的fid。问题是我现在不知道如何读取值并将它们输入矩阵,正如我在原始问题fid=fopen('iris.data');ImportData=Zero(150,4);I=1;tline=fgetl(fid);而ischar(tline)中提到的那样ImportData(i,:)=sscanf(tline(1:end),“%f,%f,%f,%%*s”);disp(ImportData(i,:);disp(size(ImportData(i,:));tline=fgetl(fid);i=i+1;end fclose(fid);但是,文件中每行中的第五个元素是字符串,它仍然不会被(读取)或复制到矩阵中。如果我更改ImportData=0(150,4);导入数据=零(150,5);我得到了这个错误???下标赋值维度不匹配。有什么帮助吗?谢谢。是的,你不能在Matlab中混合数据类型。因此你不能将字符串存储在同一个变量中。但是由于你的点是升序编号的,你可以将迭代器值I存储为第五个元素。你看不到存储strin的意义g-你不能用这些信息做任何事情……耶,你说得有道理。我想我不需要字符串。谢谢:)