how can I loop a repmat function over columns of matrix?

조회 수: 3 (최근 30일)
shaimaa zidan
shaimaa zidan 2019년 9월 12일
답변: dpb 2019년 9월 14일
I have 3 matrices v1,v2,v3 each matrix is (31 row *10 column) and a column vector w (31* 1).
I used this function to get (r11) which equal the repmat vector of values in vector (w) by values in the first column of matrix (v1).
r11=[];
for i=1:length(w);
r11=[r11 repmat(w(i),1,v1(i,1))];
end
could you help me to loop this function over each column in matrix (v1) ,then looping over each column in matrices (v2),(v3)?
thank you.
  댓글 수: 1
dpb
dpb 2019년 9월 12일
What is the size and shape of the desired output?

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

답변 (1개)

dpb
dpb 2019년 9월 14일
Rereading, I guess it's just
r=cell2mat(arrayfun(@(v,w) repelem(v,w,1),v,repmat(w,1,3),'uni',0));
for each array v.
Naming variables with numeric subscripts makes difficult to write generic code; use a cell array or other structure over which can iterate programmatically instead. Or, the above solution would work if wrote
r=cell2mat(arrayfun(@(v,w) repelem(v,w,1),[v1 v2 v3],repmat(w,1,3),'uni',0));
Then the results would be in each of the three sets of 10 columns in the resulting array

카테고리

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