Multiply each column by a elements of cell array

hey
i have a matrix like this:
matrix=
0 2 4
3 0 0
0 1 0
3 0 1
0 0 0
and cell array: mul={1,1,0.6,0.6,0.3}
i want to multiply all columns by 'mul' and then add. e.g. [0x1 + 3x1 + 0x0.6 + 3x0.6 + 0x0.3] and same for all other columns.
Thanks

 채택된 답변

KSSV
KSSV 2017년 6월 13일

0 개 추천

matrix=[0 2 4
3 0 0
0 1 0
3 0 1
0 0 0];
mul={1,1,0.6,0.6,0.3} ;
iwant = sum(bsxfun(@times,matrix,[mul{:}]'))

댓글 수: 2

lucksBi
lucksBi 2017년 6월 13일
편집: lucksBi 2017년 6월 13일
Thanks alot. Will it be same if matrix is a cell array instead of 2D?
KSSV
KSSV 2017년 6월 13일
No...it is better to work with matrices. I suggest to convert your mul to matrix.

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Guillaume
Guillaume 2017년 6월 13일

1 개 추천

Conceptually it would make a lot more sense for your cell array to be a column rather than a row.
Anyway, the easiest way to do what you want is to convert your cell array into a column vector. It is then trivial to multiply it with the matrix:
result = sum(matrix .* cell2mat(mul')); %requires R2016b or later
%in <R2016b: result = sum(bsxfun(@times, matrix, cell2mat(mul')));

댓글 수: 1

lucksBi
lucksBi 2017년 6월 13일
Yes Thanks alot for suggestion but it was kind of requirement. Thanks for your time.

댓글을 달려면 로그인하십시오.

Andrei Bobrov
Andrei Bobrov 2017년 6월 13일

1 개 추천

result = matrix.'*cat(1,mul{:});
or
result = [mul{:}]*matrix;

카테고리

도움말 센터File Exchange에서 Logical에 대해 자세히 알아보기

태그

질문:

2017년 6월 13일

댓글:

2017년 6월 13일

Community Treasure Hunt

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

Start Hunting!

Translated by