在matlab中组合字符串和数字

时间:2012-02-17 08:29:15

标签: string matlab

假设我有一个温度值矩阵和一个与测量深度相对应的矢量,例如

depth = [1,4,8,11,15,16,20];
Temp = rand(1800,7);

我想在Temp的第一行插入一行标题,其中每个标题代表测量的深度。我需要标题来描述temp,然后是深度,例如temp1,temp4,temp8,temp11 ......等等。

我正在考虑做一些事情,比如定义'temp',然后添加每列的相应深度,例如:

varstarter = 'temp';

然后使用像'regexp'这样的东西但是我不确定它是如何工作的。 有什么建议吗?

2 个答案:

答案 0 :(得分:5)

arrayfun(@(x) ['temp' int2str(x)],depth,'UniformOutput',false)

这里,@(x) ['temp' int2str(x)]定义了一个匿名函数,它将整数输入作为字符附加到给定的字符序列temp。然后arrayfun将此函数应用于第二个参数的每个元素,即depth。 (由于arrayfun最常用于产生数字输出,例如每个函数应用一个数字,输出通常是一个矩阵,其大小至少在一个维度上等于第二个输入。'UniformOutput',false选项因此告诉它这不是这种情况(字符串的长度取决于每个输入的位数),输出需要是一个单元格数组。)

使用[ans; num2cell(Temp)];将标题和数字数据合并到一个单元格数组中。

答案 1 :(得分:3)

在@ arne.b的良好答案中,风格小改进:

 arrayfun(@(x) {['temp' int2str(x)]},depth);

查看this post了解详情。