在MATLAB中使用textscan()时忽略“字符”

时间:2011-03-14 18:11:58

标签: matlab file-io literals textscan

我正在使用textscan从文件中读取数据。正在阅读的数据是:

"ABC",0.156
"DEF",0.125
"GHI",0.101

我的代码是 - data = textscan(fid, '%s %f', 'Delimiter', ',');

数据{1}来了

'"ABC"'
'"DEF"'
'"GHI"'

我希望数据{1}为 -

'ABC'
'DEF'
'GHI'

最后,我怎样才能得到答案

data = 
'ABC' [0.156];
'DEF' [0.125];
'GHI' [0.101];

而不是使用数据{1}和数据{2}。谢谢!

2 个答案:

答案 0 :(得分:4)

在阅读字符串时,实际上有两种方法可以忽略"个字符。根据{{​​3}}文档,您可以使用%q格式代替%s格式:

data = textscan(fid,'%q %f','Delimiter',',');

或者您可以使用%s格式阅读字符串,并使用TEXTSCAN函数从"删除data{1}个字符:

data{1} = strrep(data{1},'"','');

然后,您可以使用函数STRREPdata{2}中的数值数组转换为单元格数组,以便NUM2CELL使用{{1}中的字符串单元格数组concatenate 1}}:

data{1}

答案 1 :(得分:1)

为了摆脱双引号,请使用

data = textscan(fid, '%q %f', 'Delimiter', ',');

%q的神奇之处在哪里。