在Matlab中从字符串中读取浮点数

时间:2017-02-27 19:01:40

标签: matlab multidimensional-array text-files string-comparison

我是Matlab的新手,我试图从Matlab中的文本文件中读取数据(x,y坐标)并存储在2D数组中。我的目标是以下列格式查看文本文件:

XPos 4180
YPos 60
Orientation 98.69
AccelX 438.00
AccelY 161.00
AccelZ -865.00
XPos 4079
YPos -379

我可以检查该行是否包含' XPos',但是我无法在同一行检索该数字并将其存储在我自己的空数组中初始化。我尝试过使用sscanf和regex。我已经注释了正则表达式行,但它确实有效。然而,它将值存储在单元格数组中,但同样,我在尝试从单元格数组中检索值并将其存储在空的2D数组中时遇到了问题。

dataPoints = zeros(n,n);
row = 0;
column = 0;

file = fopen('file.txt', 'r');

while ~feof(file)
    line = fgets(file);
    fprintf(line);

    k = strfind(line, 'XPos');

    if(isempty(k))

    else
        fprintf('Found One');
        %x = regexp(line, '.*?(\d+(\.\d+)*)', 'tokens' );
    end
end

2 个答案:

答案 0 :(得分:2)

您可以使用textscan。例如:

fid = fopen(s);
C = textscan(fid,'%s %f');
fclose(fid);

array2D = [C{2}(strcmp(C{1},'XPos')),C{2}(strcmp(C{1},'YPos'))]

但我不太确定你想要什么作为输出。

答案 1 :(得分:0)

一个简单的sscanf也可以工作,一旦你检测到行中的字符串XPos,命令: c = sscanf('XPos 4180','XPos%f') 返回编号4180。