Filter löschen
Filter löschen

How expand a matrix?

1 Ansicht (letzte 30 Tage)
Mori
Mori am 22 Jan. 2016
Kommentiert: Mori am 23 Jan. 2016
How we can expand matrix A to B? each element of matrix A is equal to sum of each B columns. (step of 3)
A=
[1 5 8 12 7 5 2 1]
to B=
1 3 3 3 3 3 2 1
0 2 3 3 3 2 0 0
0 0 2 3 1 0 0 0
0 0 0 3 0 0 0 0
0 0 0 0 0 0 0 0
  4 Kommentare
Mori
Mori am 23 Jan. 2016
I will use this code for a large Matrix with large numbers. 3 is the gris size, in real data will be 300. I will post the results. Thanks
Mori
Mori am 23 Jan. 2016
Yea, works perfectly. Thnaks

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

jgg
jgg am 23 Jan. 2016
Bearbeitet: jgg am 23 Jan. 2016
This should work
A = [1 5 8 12 7 5 2 1];
floors = floor(A./3);
C = cumsum(3.*ones(max(floors)+1,length(A)),1)
A_p = repmat(A,max(floors)+1,1);
res = 3.*(C <= A_p);
remainder = A - sum(res);
r = cellfun(@(row) find(row == 0, 1, 'first'), num2cell(res,1));
ind = sub2ind(size(res),r,[1:length(A)]);
res(ind) = remainder;
  1 Kommentar
Mori
Mori am 23 Jan. 2016
thanks, it works

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Matrices and Arrays 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