How to insert an element after each number in a vector?
15 ビュー (過去 30 日間)
古いコメントを表示
Dear all,
I would like to add an element after each value in a vector, for example:
a=[10,2,40,58,100,90,40,30,4];
I would like to add 1 to vector values:
result = [1,10,1,2,1,40,1,58,1,100,1,90,1,40,1,30,1,4,1];
Help me please.....
1 件のコメント
Image Analyst
2019 年 5 月 5 日
Instead of "after each number" don't you mean "after each number, EXCEPT the first number, where the number is also before the first number?" That's what Star and Adams solutions do. Or do you really mean what you said, instead of the "result" you gave, and so there would be no 1 at the beginning?
採用された回答
Star Strider
2019 年 5 月 5 日
One approach:
a=[10,2,40,58,100,90,40,30,4];
result = [ones(size(a)); a];
result = [result(:); 1]'
producing:
result =
1 10 1 2 1 40 1 58 1 100 1 90 1 40 1 30 1 4 1
4 件のコメント
その他の回答 (2 件)
Adam Danz
2019 年 5 月 5 日
result = [reshape([ones(size(a));a],length(a)*2,1);1]';
3 件のコメント
KALYAN ACHARJYA
2019 年 5 月 5 日
編集済み: KALYAN ACHARJYA
2019 年 5 月 5 日
Nice one, +1, I tried, but can't
Image Analyst
2019 年 5 月 5 日
Instead of "after each number" did you mean "after each number, EXCEPT the first number, where the number is also before the first number?" That's what Star and Adam's solutions do. Or do you really mean what you said, instead of the "result" you gave, and so there would be no 1 at the beginning?
Just to be complete and cover all ambiguities, I'll give the other solution. If you really want what you said in words, rather than the numerical result you gave, then use this code:
result = [a; ones(size(a))]
result = result(:)'
The result is:
result =
10 1 2 1 40 1 58 1 100 1 90 1 40 1 30 1 4 1
Note: 1's are only after the numbers and not before the first one.
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!