将数值数组转换为字符元胞数组并在一行中与字符连接
Convert numeric array to cell array of chars and concat with chars in one line
如何将数值数组转换为字符元胞数组并在一行中与字符连接?
示例:
我有一个数值数组:
[1, 5, 12, 17]
我想将其转换为字符元胞数组并与字符 'Sensor ' 连接并得到:
{'Sensor 1', 'Sensor 5', 'Sensor 12', 'Sensor 17'}
有没有办法在一行中做到这一点?
我暂时得到:
nums = [1, 5, 12, 17];
cellfun(@(x) ['Sensor ' num2str(x)], num2cell(nums), 'UniformOutput', 0)
有没有更简单或者更紧凑的方式?
您可以使用 sprintf()
和 arrayfun()
使它稍微整洁一些,但不确定这是否为您节省了很多:
nums = [1, 5, 12, 17];
arrayfun(@(x) {sprintf('Sensor %d',x)}, nums) % Gives a cell array of char array strings
arrayfun(@(x) sprintf("Sensor %d",x), nums) % Gives an array of string strings (version 2016b onwards)
您还可以在 2016a 以后的 MATLAB 版本中使用 compose()
:
compose('Sensor %d', nums) % Char array
compose("Sensor %d", nums) % String array (version 2017a onwards)
使用字符串的简单替代方法:
>> nums = [1, 5, 12, 17];
>> cellstr("Sensor " + nums)
ans =
1×4 cell array
{'Sensor 1'} {'Sensor 5'} {'Sensor 12'} {'Sensor 17'}
字符串需要 MATLAB R2017a.
另一个只使用函数 "Introduced before R2006a" 的选项是:
A = [1, 5, 12, 17];
B = strcat('Sensor', {' '}, strtrim(cellstr(int2str(A.'))) );
这会生成一个列向量 - 因此您应该根据需要进行转置。
如何将数值数组转换为字符元胞数组并在一行中与字符连接?
示例:
我有一个数值数组:
[1, 5, 12, 17]
我想将其转换为字符元胞数组并与字符 'Sensor ' 连接并得到:
{'Sensor 1', 'Sensor 5', 'Sensor 12', 'Sensor 17'}
有没有办法在一行中做到这一点?
我暂时得到:
nums = [1, 5, 12, 17];
cellfun(@(x) ['Sensor ' num2str(x)], num2cell(nums), 'UniformOutput', 0)
有没有更简单或者更紧凑的方式?
您可以使用 sprintf()
和 arrayfun()
使它稍微整洁一些,但不确定这是否为您节省了很多:
nums = [1, 5, 12, 17];
arrayfun(@(x) {sprintf('Sensor %d',x)}, nums) % Gives a cell array of char array strings
arrayfun(@(x) sprintf("Sensor %d",x), nums) % Gives an array of string strings (version 2016b onwards)
您还可以在 2016a 以后的 MATLAB 版本中使用 compose()
:
compose('Sensor %d', nums) % Char array
compose("Sensor %d", nums) % String array (version 2017a onwards)
使用字符串的简单替代方法:
>> nums = [1, 5, 12, 17];
>> cellstr("Sensor " + nums)
ans =
1×4 cell array
{'Sensor 1'} {'Sensor 5'} {'Sensor 12'} {'Sensor 17'}
字符串需要 MATLAB R2017a.
另一个只使用函数 "Introduced before R2006a" 的选项是:
A = [1, 5, 12, 17];
B = strcat('Sensor', {' '}, strtrim(cellstr(int2str(A.'))) );
这会生成一个列向量 - 因此您应该根据需要进行转置。