I 've scouring the web to find a solution but not much success
p = [{2323}]; k = {'hello'};
where I want pk = {'2323hello'}
Pretty much what the concatenate function in excel would do.
Thanks, Stephan

 採用された回答

Brendan Hamm
Brendan Hamm 2016 年 1 月 13 日

2 投票

One of the issues you will face here is that what is stored in the cell array p is numeric data and concatenation of numeric data with character arrays will convert the numeric value to its ASCII representation.
>> A = [2323,'hello']
A =
ओhello
This is not what you are looking for. So, you need to convert the number to a character array using num2str:
>> A = [num2str(2323),'hello']
A =
2323hello
Now if this data is stored in cells we can simply concatenate the contents (which are the char arrays):
p = {2323}; % Brackets around {} are not necessary.
k = {'hello'};
A = {[num2str(p{:}),k{:}]}; % Convert num to a string, concatenate, place back in cell
If we were then to presume that these variables had a larger (but equal) size:
p = {2323;3434}
k = {'hello';'goodbye'}
for n = 1:length(p)
A(n) = {[num2str(p{n,1}),k{n,1}]};
end
disp(A)

1 件のコメント

Stephan Richtering
Stephan Richtering 2016 年 1 月 13 日
Thanks Brendan. Your last solution is what I was working towards.
It also seems to work if p is a mixture of strings and numbers which is what I was looking for.

サインインしてコメントする。

その他の回答 (2 件)

Star Strider
Star Strider 2016 年 1 月 13 日

1 投票

Using sprintf is one option:
p = {2323}; k = {'hello'};
pk = {sprintf('%d%s', p{:}, char(k))}
pk =
'2323hello'

2 件のコメント

Stephan Richtering
Stephan Richtering 2016 年 1 月 13 日
Thanks for you answer Star, you're solution works.
Star Strider
Star Strider 2016 年 1 月 13 日
My pleasure.

サインインしてコメントする。

Vaibhav Awale
Vaibhav Awale 2016 年 1 月 13 日

1 投票

Hi,
This can be done using the following command:
>> pk = {[num2str(p{:}), k{:}]}
Refer to following documentation for more information about how cell array indexing works:
Hope this helps.
Regards,
Vaibhav

2 件のコメント

Stephan Richtering
Stephan Richtering 2016 年 1 月 13 日
Hi Vaibhav,
Thanks for the answer. Seems to work for that example but what if I didn't know if p was a number or string would this still work?
Thanks, Stephan
Vaibhav Awale
Vaibhav Awale 2016 年 1 月 13 日
Hi Stephan,
Interestingly "num2str" function returns the string if you give string as an input. So, this approach would work even when "p" is a string!
Regards,
Vaibhav

サインインしてコメントする。

カテゴリ

ヘルプ センター および File Exchange で Matrix Indexing についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by