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

Read Floating Point Numbers from string in Matlab

我是 Matlab 的新手,我正在尝试从 Matlab 中的文本文件读取数据(x,y 坐标)并将其存储在二维数组中。我的目标是查看以下格式的文本文件:

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

我可以检查该行是否包含 'XPos',但我无法检索同一行中的数字并将其存储在我已初始化的空数组中。我试过使用 sscanf 和正则表达式。我已经注释掉了正则表达式行,但它确实有效。然而,它将值存储在元胞数组中,但我再次 运行 遇到问题,试图从元胞数组中检索值并将其存储在我的空二维数组中。

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

您可以使用 textscan。例如:

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

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

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

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