在Matlab中将多个字符串组合成一个字符串

5

我有一个变量A,其中包含以下几个字符串数组:

'0'    '->'    '2'      '1.000000'    '1.000200'    'A-MPDU'     '1.000000'
'0'    'NO'    'NaN'    '1.000270'    '1.000570'    'BACKOFF'    'NaN'     

我希望将这些字符串变成一个类似于这样的字符串形式:

'0 -> 2 1.000000 1.000200 A-MPDU 1.000000'
'0 NO NaN 1.000270 1.000570 BACKOFF NaN'   

如何使用Matlab实现这一点?
3个回答

5

方法一:

如果您想要将两个字符串组合在一起,可以使用 strcat 函数。

Example:

str = strcat('Good', 'morning')

str =

Goodmorning

但是你需要在字符串之间添加空格:

因此,您需要将字符串更改为类似于'0 ' '-> ' '2 '的内容,以获得所需的字符串。

另一种方法:

a='aaaa';
b='bb';
c=sprintf('%s %s',a,b); 

但是在我的变量中没有“,”,所以当我使用strcat时,结果没有任何不同。 - bnbfreak

5

可能假设 A 是一个单元数组,那么你可以使用以下方法将其一行转换为字符数组:

char(cellfun(@(x)[x ' ']',C(1,:),'UniformOutput',false))'

请注意,我们使用cellfun将匿名函数应用于单元格数组的每个字符数组(元素)。 该函数将一个空格附加到字符数组(即“0”变为“0 ”),然后我们对此结果进行转置以获得一列。 我们对每个元素都执行此操作,以便最终结果是一个字符列,我们对其执行最后一次转置以获取字符串。
例如:
>> char(cellfun(@(x)[x ' ']',C(1,:),'UniformOutput',false))'

   ans =
         0 -> 2 1.000000 1.000200 A-MPDU 1.000000 

>> char(cellfun(@(x)[x ' ']',C(2,:),'UniformOutput',false))'

   ans =
         0 NO NaN 1.000270 1.000570 BACKOFF NaN 

尝试以上方法并观察结果!

使用该命令是否可以同时处理这两行数据?因为之后我需要处理很多行。 - bnbfreak
如果您试图一次性完成所有操作,那么您只会得到一个字符串(您可以将其拆分为多个字符串)。 - Geoff

3

我假设您有一个单元数组A,其中包含所有这些字符串。 如果是这样,那么下面的内容应该有效。

A={'0'    '->'    '2'      '1.000000'    '1.000200'    'A-MPDU'     '1.000000';
   '0'    'NO'    'NaN'    '1.000270'    '1.000570'    'BACKOFF'    'NaN'}

concatenatedCell= {[A{1,:}];[A{2,:}]}

输出:

'0->21.0000001.000200A-MPDU1.000000'
'0NONaN1.0002701.000570BACKOFFNaN'

您会发现这里缺少空格(与您的输出相比)。除非:1.它们在您的输入字符串中,或者2.您在连接字符串时将其插入(稍微有些困难),否则它们不会出现在您的输出中。请保留HTML标记。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接