在matlab中逐行连接两个字符串数组,而不使用for循环通过数组

时间:2014-05-13 17:45:45

标签: matlab

我知道这很简单。我只是不记得怎么做了!

我有什么:

>> filenames

filenames = 

    '0F06EB0A338A35CDBD33356A470D5052'
    '75168DAA9A225EF6F79DDA5014CA69FD'
    'DAEE5EE3E65584655CE208F15D1F6F43'
    'EF026066C8BAB5D32F9B67872C69451D'

我想要的是什么:

>> varnames

varnames = 

    'x0F06EB0A338A35CDBD33356A470D5052'
    'x75168DAA9A225EF6F79DDA5014CA69FD'
    'xDAEE5EE3E65584655CE208F15D1F6F43'
    'xEF026066C8BAB5D32F9B67872C69451D'

(我知道genvarnames,但这不是我将要使用的,因为我需要x在所有这些之前)。

到目前为止我尝试了什么

>> ['x' filenames{1}]

ans =

x0F06EB0A338A35CDBD33356A470D5052

非常成功!现在我只需要将其概括为整体。但是,我不打算使用for-loop,因为我不是一个食人魔。

我们试试这个:

>> ['x' filenames{:}]

ans =

x0F06EB0A338A35CDBD33356A470D505275168DAA9A225EF6F79DDA5014CA69FDDAEE5EE3E65584655CE208F15D1F6F43EF026066C8BAB5D32F9B67872C69451D

Weeeell,差不多,也许repmat可以提供帮助!很明显:

>> repmat('x', 4, 1)

ans =

x
x
x
x

这就是我需要让它工作的所有,对吧?

>> varnames= [repmat('x', 4, 1) filenames{:}]
??? Error using ==> horzcat
CAT arguments dimensions are not consistent.

错误。也许这很简单:

>> varnames= [repmat('x', 4, 1) filenames(:)]
??? Error using ==> horzcat
CAT arguments dimensions are not consistent.

如果我将它们全部删除怎么办?

>> varnames= [repmat('x', 4, 1) filenames]
??? Error using ==> horzcat
CAT arguments dimensions are not consistent.

...让我们只是胡椒{}

>> varnames= {repmat('x', 4, 1) filenames{:}}

varnames = 

  Columns 1 through 4

    [4x1 char]    [1x32 char]    [1x32 char]    [1x32 char]

  Column 5

    [1x32 char]

......废话。

嗯,我没有想法,我不会因为失败的尝试而烦扰你。 我拒绝相信for循环是唯一的方法!

1 个答案:

答案 0 :(得分:2)

http://www.mathworks.com/help/matlab/ref/strcat.html

“水平连接字符串”

strcat('x',StringMatrix)

测试:

>> SA2
SA2 = 
    'four'    'five'    'six'
>> strcat('x',SA2)
ans = 
    'xfour'    'xfive'    'xsix'