필터 지우기
필터 지우기

How to repeat a row by a certain factor

조회 수: 2 (최근 30일)
Jessica
Jessica 2015년 4월 26일
댓글: Mohammad Abouali 2015년 4월 26일
I have this sample matrix:
A=[2 2 2; 3 3 3; 4 4 4];
I would like to multiply each row by a certain factor (in this specific case, the first by 2, the second by 1, and the third by 3) to generate:
A_New= 2 2 2 2 2 2 3 3 3 4 4 4 4 4 4 4 4 4
Does anyone have suggestions on how to do this? I tried:
B = repmat(A,[2 1 3],1)
but this created separate matrices.

채택된 답변

Mohammad Abouali
Mohammad Abouali 2015년 4월 26일
편집: Mohammad Abouali 2015년 4월 26일
% Creating sample data
A=[2 2 2; 3 3 3; 4 4 4];
nRep=[2,1,3];
% Constructing A_New as instructed.
A_new=cell2mat(arrayfun(@(r) repmat(A(r,:),1,nRep(r)), ...
1:numel(nRep), ...
'UniformOutput',false));
% printing the results
fprintf('A=');
fprintf('%d ',A_new)
fprintf('\n');
Once you run it you get this:
A=2 2 2 2 2 2 3 3 3 4 4 4 4 4 4 4 4 4
  댓글 수: 1
Mohammad Abouali
Mohammad Abouali 2015년 4월 26일
To preserve the structure then do this:
A=[2 2 2; 3 3 3; 4 4 4];
nRep=[2,1,3];
A_new=cell2mat( arrayfun(@(r) repmat(A(r,:),nRep(r),1),(1:numel(nRep))','UniformOutput',false) )
A_new =
2 2 2
2 2 2
3 3 3
4 4 4
4 4 4
4 4 4
If this is answering your question, please accept the answer by choosing the green button on top

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

추가 답변 (1개)

Jessica
Jessica 2015년 4월 26일
This is very helpful. Is there a way to preserve the structure so that it is in the format:
A_New=[2 2 2; 2 2 2; 3 3 3; 4 4 4; 4 4 4; 4 4 4];
Thanks!

카테고리

Help CenterFile Exchange에서 Structures에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by