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]
?
谢谢您的帮助!
由于您的输入是字符数组,首先将每行转换为单元格以允许与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)
归档时间: |
|
查看次数: |
9550 次 |
最近记录: |