如何在matlab中将char转换为数字?

时间:2015-08-07 14:44:05

标签: matlab char numbers

请帮我解决以下问题:

在matlab中,我有一个Nx3 char变量,其中N可以根据输入而变化。 让我们说N = 5,我有以下变量A(5x3 char):

A = [' 1Y';
     ' 5Y';
     '10Y';
     '15Y';
     '20Y']

有没有办法定义一个新变量B,其值为变量A中的数字,即B=[1; 5; 10; 15; 20]

感谢您的帮助!

3 个答案:

答案 0 :(得分:5)

由于您的输入是字符数组,因此首先将每行转换为单元格,以便与MATLAB中的字符串函数一起使用:

out = mat2cell(val, ones(size(val,1),1));

mat2cell将矩阵转换为一系列单元格。在我们的例子中,您希望有5个单元格,或者与矩阵val中的行数一样多的单元格,并且每个单元格与val中的列总数一样长。

执行此操作后,您可以将Y字符串替换为空,然后转换为数字:

out = strrep(out, 'Y', '');
out2 = cellfun(@str2num, out);

第一行使用strrep替换任何Y的实例,然后我们在每个单元格上应用str2num以将修剪后的字符串转换为实际数字。这是通过使用cellfun,以便我们可以遍历每个单元格,将str2num应用于每个单元格。

我们得到:

out2 =

     1
     5
    10
    15
    20

完全可重复:

val = ['1Y '; '5Y '; '10Y'; '15Y'; '20Y'];
out = mat2cell(val, ones(size(val,1),1), size(val,2));
out = strrep(out, 'Y', '');
out2 = cellfun(@str2num, out);

答案 1 :(得分:3)

假设您有以下内容:

A = [' 1Y';
' 5Y';
'10Y';
'15Y';
'20Y';]

然后这应该可以解决问题:

B=A'
C=strsplit(B(:)','Y')
V=cellfun(@str2num,C(1:end-1))

答案 2 :(得分:1)

这是将cellstr转换为其数值的方法:

a = {'1'};
ans1 = int64(str2num(a{1}));