2012-02-17 83 views
2

假设我有一个温度值矩阵和一个与测量深度相对应的向量,例如,在MATLAB中结合字符串和数字

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

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

我正在考虑做一些类似于定义'temp'的东西,然后添加每列的相应深度。

varstarter = 'temp'; 

然后使用'regexp'之类的东西,但我不确定这将如何工作。 有什么建议吗?

回答

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

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

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

3

的风格的小改进过的@ arne.b好答案:

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

退房this post了解更多详情。