Merge two columns into one
167 ビュー (過去 30 日間)
古いコメントを表示
Hello everyone, A quick question: I want to merge two columns into one. What I've tried -
x = [1;2;3]; % (3x1 size)
y = [5;6;7]; % (3x1 size)
XY = [x y]; % (3x2 size)
[ 1 5
2 6
3 8]
versus what i ultimately want
xy = [15;26;38]; % (3x1 size)
Any thoughts? I was looking into reshape as well but that would also give me a 3x2 variable. Thanks,
3 件のコメント
OCDER
2017 年 9 月 8 日
編集済み: OCDER
2017 年 9 月 8 日
Is there a mathematical workaround? For instance:
xy = 10*x+y
xy =
15
26
37
If not, yup, it gets pretty messy as Adam said.
[ numbers -> strings -> combined string -> number ] is the workaround.
str2double(sprintf('%d%d', x, y))
sprintf is generally faster if combining multiple numbers to a single string.
str2double is faster than str2num for some reason.
Adam
2017 年 9 月 11 日
str2double doesn't use eval, which is good, but it wouldn't work in my solution. I can't remember off-hand what it resulted in, but it wasn't the required answer!
回答 (1 件)
Stephen23
2017 年 9 月 11 日
編集済み: Stephen23
2017 年 9 月 11 日
Ugly eval is not required, a simple use of sprint and sscanf is more efficient:
>> x = [1;2;3];
>> y = [5;6;8];
>> sscanf(sprintf('%d%d,',[x.';y.']),'%d,')
ans =
15
26
38
This is more than four times faster than the accepted answer (1e4 iterations):
Elapsed time is 3.26133 seconds. % accepted answer
Elapsed time is 0.716072 seconds. % my answer
2 件のコメント
Stephen23
2017 年 9 月 11 日
@Natasha Sekhon: you might like to read this thread, it has a few points that are worth keeping in mind when learning MATLAB:
参考
カテゴリ
Help Center および File Exchange で Whos についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!