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

3 Ansichten (letzte 30 Tage)
shaimaa zidan
shaimaa zidan am 12 Sep. 2019
Beantwortet: dpb am 14 Sep. 2019
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.

Antworten (1)

dpb
dpb am 14 Sep. 2019
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

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by