【问题标题】:Is it possible to concatenate a string with series of number?是否可以将字符串与一系列数字连接起来?
【发布时间】:2013-03-08 17:31:51
【问题描述】:

我有一个字符串(例如'STA'),我想创建一个单元格数组,它将我的字符串与从 1 到 X 的数字串联起来。

我希望代码在下面执行类似于前循环的操作:

for i = 1:Num
    a = [{a}  {strcat('STA',num2str(i))}]
end

我希望最终结果采用 {} 的形式

a = 'STA1' 'STA2' 'STA3' ...

(我想将其设置为 ColumnFormat 数组中的 uitable)

ColumnFormat = {{a},...                 % 1
             'numeric',...              % 2
             'numeric'};                % 3

【问题讨论】:

  • 你的问题是什么?

标签: string matlab concatenation matlab-uitable


【解决方案1】:

我不确定是否从 STA1 开始,但这应该会为您提供一个以 STA 开头的列表(我猜您可以从中删除第一个条目)。

N = 5;
[X{1:N+1}] = deal('STA');
a = genvarname(X);
a = a(2:end);

【讨论】:

  • 有趣的方法。如果您需要从 1 开始的序列中的数字。X=repmat({'STA'},1,N+1); 也应该可以工作。
【解决方案2】:

您可以结合使用 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);

【讨论】:

    【解决方案3】:

    试试这个:

    N = 10;
    a = cell(1,N);
    for i = 1:N
        a(i) = {['STA',num2str(i)]};
    end
    

    【讨论】:

    • 是否可以在没有 FOR 循环的情况下使用它?
    猜你喜欢
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多