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 Center および File ExchangeStructures についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by