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

Ast*_*rid 1 matlab numbers char

请帮助我解决以下问题:

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

A = [' 1Y';
     ' 5Y';
     '10Y';
     '15Y';
     '20Y']
Run Code Online (Sandbox Code Playgroud)

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

谢谢您的帮助!

ray*_*ica 5

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

out = mat2cell(val, ones(size(val,1),1));
Run Code Online (Sandbox Code Playgroud)

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

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

out = strrep(out, 'Y', '');
out2 = cellfun(@str2num, out);
Run Code Online (Sandbox Code Playgroud)

第一行用于strrep替换任何Y没有任何内容的实例,然后我们应用str2num每个单元格将修剪后的字符串转换为实际数字.这是通过使用cellfun我们可以迭代通过每个单元格应用于str2num每个单元格.

我们得到:

out2 =

     1
     5
    10
    15
    20
Run Code Online (Sandbox Code Playgroud)

完全可重复:

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);
Run Code Online (Sandbox Code Playgroud)