使用无值转换数字中的字符串单元格(matlab)

时间:2015-07-10 15:42:28

标签: matlab

我有 A = [' x8' ' X 7' '无' '无' ' x9.1'] 我想转换为 B = [8 7 0 0 9.1](数字) Matlab代码?

我试过了:

IND =的strcmp(A,'无&#39);
F2 = A(IND == 0); %' x _'条款
data = cellfun(@(x)x(2:end),f2,' UniformOutput',false); %删除数字的x f3 = sprintf('%s *',数据{:});
N = sscanf(f3,'%f *'); %转换为数字

它会转换' x8'到8岁,但我仍然没有'没有'值。 任何解决方案同时解决所有问题?

感谢

1 个答案:

答案 0 :(得分:0)

你可以达到你想要的效果:

要将包含'None'的单元格替换为0,只需执行以下操作:

查找这些单元格的索引(正如您已经完成的那样):

idx = strcmp(A,'None');

然后将0分配给那些索引,括在{curly braces}中,因为你将它们放入一个单元格数组中:

A(idx) = {0};

现在对于其他条目,使用cellfun和其他索引一样,转换为双打:

A(~idx) = cellfun(@(x) str2double(x(2:end)),A(~idx),'uni',0)

现在A是以下单元格数组:

A = 

    [8]    [7]    [0]    [0]    [9.1000]

您可以转换为数字数组,因为所有条目都是数字:

A =  cell2mat(A)

A =

    8.0000    7.0000         0         0    9.1000

当然,您可以将最后两个步骤合并为一个步骤。

耶!