필터 지우기
필터 지우기

Multi dimensional array scaling

조회 수: 2 (최근 30일)
mark
mark 2014년 1월 19일
댓글: mark 2014년 1월 20일
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

채택된 답변

Azzi Abdelmalek
Azzi Abdelmalek 2014년 1월 19일
편집: Azzi Abdelmalek 2014년 1월 19일
[n,m,p]=size(A)
out=5*reshape(repmat(1:p,n*m,1),size(A)).*A

추가 답변 (1개)

Jan
Jan 2014년 1월 19일
편집: Jan 2014년 1월 19일
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))

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by