problem for creating vector with for loop

조회 수: 1 (최근 30일)
sermet
sermet 2014년 4월 29일
댓글: José-Luis 2014년 4월 29일
a={'w','c','e'};
%I wanna create 2 times of w,c,e, with using for loop, like this
aa={'w','w','c','c','e','e'};

채택된 답변

José-Luis
José-Luis 2014년 4월 29일
a={'w','c','e'};
nRep = 5;
your_mat = reshape(repmat(a,nRep,1),1,[]);

추가 답변 (2개)

Justin
Justin 2014년 4월 29일
편집: Justin 2014년 4월 29일
This is not a difficult task to do but does take a little extra planning in how to index the first array.
I'll give you an example of one way to do it but you should try another way as well.
% first define aa as an empty cell
aa = {};
% then create a loop for each element of your original matrix
for i = 1:length(a)
% now concatenate your aa array with the repeated elements of a (you can just write a(i) twice)
aa = [aa a(i) a(i)];
end
Other options may be to use repmat, reshape, or indexing differently using a modulo of 2 to increment your index of the original array.
Some of these options will be more robust and able to work when you want to make a triple copy or other elements of your input vary.
  댓글 수: 1
sermet
sermet 2014년 4월 29일
편집: sermet 2014년 4월 29일
I gave 2 for just an example, actual repeating times depends on the situation. For example I wanna repeat 4 and I wanna use repmat, could you show me how I can use repmat for a?

댓글을 달려면 로그인하십시오.


Jos (10584)
Jos (10584) 2014년 4월 29일
Many roads to Rome:
A = {'w' 'c' 'e'}
n = 2
AA1 = A(kron(1:numel(A),ones(1,n)))
AA2 = reshape(repmat(A,n,1),1,[])
AA3 = A(ceil(linspace(1/n,numel(A),n*numel(A))))
  댓글 수: 1
José-Luis
José-Luis 2014년 4월 29일
:)
Maybe we should start a thread with the most complicated ways to solve this problem.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by