在MATLAB中从csv文件中读取一个字符串

时间:2012-10-08 04:53:19

标签: matlab csv textinput

我有一个包含数字,日期和文字的CSV文件。我必须提取包含文本的列。

例如,示例csv文件看起来像

1-1-2000,1,2.3,TRUE    
2-1-2000,1,2.3,FALSE
  1. 我想提取包含TRUE / FALSE值的列。

  2. 我想将TRUE转换为1,将FALSE转换为0。

  3. 请建议一些功能和示例代码来执行此操作

1 个答案:

答案 0 :(得分:2)

你可以试试这个:

[~,~,~,bools] = textread('filename.csv', '%s%d%f%s', 'delimiter', ',');

bools = cellfun(@strtrim, bool, 'uniformoutput', false);
bools = strcmp(bools, 'TRUE');

如果您事先知道从不存在任何尾随空格,则可能不需要strtrim行。带有strcmp的行为所有与字面值TRUE进行字符串比较的条目输出逻辑数组,这意味着所有其他条目都为false 。含义:

1-1-2000,1,2.3,TRUE    
2-1-2000,1,2.3,BANANAS

将生成相同的逻辑向量。如果您还想明确地与字符串文字FALSE进行比较,请使用以下内容:

a = NaN(size(bools));
a(strcmp(bools, 'TRUE'))  = 1;
a(strcmp(bools, 'FALSE')) = 0;
if ~any(isnan(a))
    bools = logical(a);
    clear a
else
    %# handle the error
end