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

jgg
jgg am 22 Jan. 2016
Aren't there a very large number of ways to do this? Is there some specific form you want?
Star Strider
Star Strider am 23 Jan. 2016
It seems that it’s constrained to use only {1, 2, 3}. That may be what ‘step of 3 refers to.
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

0 Stimmen

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;

Weitere Antworten (0)

Kategorien

Mehr zu Interpolation finden Sie in Hilfe-Center und File Exchange

Gefragt:

am 22 Jan. 2016

Kommentiert:

am 23 Jan. 2016

Community Treasure Hunt

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

Start Hunting!

Translated by