我有一个字符串(例如'STA'),我想创建一个单元格数组,它将是我的刺痛与1到X之间数字的串联。
我希望代码能够像下面的fore循环那样做:
for i = 1:Num
a = [{a} {strcat('STA',num2str(i))}]
end
我希望最终结果的形式为{< 1xNum cell>}
a = 'STA1' 'STA2' 'STA3' ...
(我想在ColumnFormat数组中将其设置为uitable)
ColumnFormat = {{a},... % 1
'numeric',... % 2
'numeric'}; % 3
答案 0 :(得分:3)
我不确定从STA1开始,但这应该会给你一个以STA开头的列表(我猜你可以删除第一个条目)。
N = 5;
[X{1:N+1}] = deal('STA');
a = genvarname(X);
a = a(2:end);
答案 1 :(得分:1)
试试这个:
N = 10;
a = cell(1,N);
for i = 1:N
a(i) = {['STA',num2str(i)]};
end
答案 2 :(得分:1)
您可以将 NUM2STR (将数字转换为字符串), CELLSTR (将字符串转换为单元格数组), STRTRIM (删除多余的空格)和 STRCAT (与另一个字符串组合)功能。
您需要(:)
以确保数字向量为列。
x = 1:Num;
a = strcat( 'STA', strtrim( cellstr( num2str(x(:)) ) ) );
作为具有更多尺寸的矩阵的替代方案,我有这个辅助函数:
function c = num2cellstr(xx, varargin)
%Converts matrix of numeric data to cell array of strings
c = cellfun(@(x) num2str(x,varargin{:}), num2cell(xx), 'UniformOutput', false);