在括号

时间:2017-11-01 11:42:28

标签: matlab textscan

我从OpenFoam制作了一个数据文件,可以及时提取特定位置的速度。我想提取其中两个速度并花时间平均。例如,我想从探针0中提取数字:0.0539764,0.0104665,0.00201741等。并从探针1中提取数字:0.690374,0.711402,0.699848等。如何在Matlab中完成?

之前我做过类似的事情,但是探针只包含1个数字(没有括号),现在它由3个括在括号中的数字组成,我不知道我应该做什么。

非常感谢帮助。

链接到整个文件:https://drive.google.com/file/d/0B9CEsYCSSZUSdjFzYXVFc1RhM0k/view?usp=sharing enter image description here

1 个答案:

答案 0 :(得分:1)

这将创建两个矩阵probe0& probe1。如果只是你想要的那样,你可以只索引每个列的第一列。

id = fopen('testprobe.txt','r');
t = textscan(id,'%s','delimiter',sprintf('\n'));
fclose(id);

out = regexp(t{1,1}(6:end-3), '(?<=\()[^)]*(?=\))', 'match', 'all');

probe0 = zeros(size(out,1),3);
probe1 = zeros(size(out,1),3);

for i = 1:size(out,1)
    if ~isempty(out{i,:})
        probe0(i,:) = (str2double(split(out{i,1}{1,1})))';
        probe1(i,:) = (str2double(split(out{i,1}{1,2})))';
    else
        probe0(i,:) = [0,0,0];
        probe1(i,:) = [0,0,0];
    end

end