How to reshape and repeat at the same time.

1 vue (au cours des 30 derniers jours)
Bahaa Algebory
Bahaa Algebory le 2 Jan 2017
Hi guys, I have the following data
data= [1 3 7 9 2 5]
and I want the data to be as a matrix (2*6)
newdata=1 1 7 7 2 2
3 3 9 9 5 5
Please help me, and thanks in advance.

Réponse acceptée

Walter Roberson
Walter Roberson le 2 Jan 2017
num_rows = 2;
num_copies = 2;
new_data = kron(reshape(data, num_rows, []), ones(1, num_copies));
Or less verbosely,
new_data = kron(reshape(data,2,[]),ones(1,2));
  5 commentaires
Walter Roberson
Walter Roberson le 5 Jan 2017
finaldata = reshape( permute(reshape(new_data, 2, 2, []), [2 1 3]), 1, [] );
Bahaa Algebory
Bahaa Algebory le 5 Jan 2017
Thanks Walter, your answer is awesome, and it is very useful.

Connectez-vous pour commenter.

Plus de réponses (1)

Roger Stafford
Roger Stafford le 2 Jan 2017
newdata = reshape(repmat(reshape(data,2,[]),2,1),2,[]);
  3 commentaires
Roger Stafford
Roger Stafford le 5 Jan 2017
It is much easier to get ‘finaldata’ directly from ‘data’:
finaldata = reshape(repmat(data,2,1),1,[]);
Bahaa Algebory
Bahaa Algebory le 5 Jan 2017
Modifié(e) : Bahaa Algebory le 5 Jan 2017
Thanks Roger. You are right, it is easier to get "finaldata" directly from "data". But I do not want to do this. Actually, I have qpsk data, so I want to separate them into two streams. Then, I will add a noise. At the end, I will combine these two streams. So, that is why I want to get the "finaldata" from the matrix "newdata".
% newdata= 1 1 7 7 2 2
3 3 9 9 5 5
I want to convert the above matrix to the following vector
finaldata= 1 1 3 3 7 7 9 9 2 2 5 5
I hope you get my point.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by