Multi dimensional array scaling

2 Ansichten (letzte 30 Tage)
mark
mark am 19 Jan. 2014
Kommentiert: mark am 20 Jan. 2014
Given the matrix A (where A is X by Y by Z matrix. Scale the matrix A such that every element in the kth page is scaled by 5k for k = 1,2,3...Z.
I would have to produce a matrix B such that with element wise multiplication with matrix A it gives me the scaled version.
I have tried messing around with repmat and reshape functions but I can't seem to get it

Akzeptierte Antwort

Azzi Abdelmalek
Azzi Abdelmalek am 19 Jan. 2014
Bearbeitet: Azzi Abdelmalek am 19 Jan. 2014
[n,m,p]=size(A)
out=5*reshape(repmat(1:p,n*m,1),size(A)).*A

Weitere Antworten (1)

Jan
Jan am 19 Jan. 2014
Bearbeitet: Jan am 19 Jan. 2014
What about starting will a simple loop:
s1 = 10;
s2 = 20;
s3 = 30;
A = rand(s1, s2, s3);
B = A;
for k = 1:s3
B(:, :, k) = B(:, :, k) * 5 * k;
end
Later on I'd prefer bsxfun:
B = bsxfun(@times, A, reshape(5:5:5*s3, 1, 1, s3))

Kategorien

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

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by