Реализация bsxfun в умножении матриц
Как всегда, пытаясь узнать больше от вас, я надеялся, что смогу получить некоторую помощь со следующим кодом.
Мне нужно сделать следующее:
1) у меня есть вектор:
x = [1 2 3 4 5 6 7 8 9 10 11 12]
2) и матрица:
A =[11 14 1
5 8 18
10 8 19
13 20 16]
Мне нужно уметь размножатьсяeach
значение отx
сevery
ценностьA
, это означает:
new_matrix = [1* A
2* A
3* A
...
12* A]
Это даст мне этоnew_matrix
размера(12*m x n)
при условии,A (mxn)
, И в этом случае(12*4x3)
Как я могу сделать это с помощьюbsxfun
из матлаба? и будет ли этот метод быстрее, чемfor-loop
?
Что касается моегоfor-loop
Мне нужна помощь здесь ... Я не могу хранить каждый"new_matrix"
как работает цикл :(
for i=x
new_matrix = A.*x(i)
end
Заранее спасибо!!
РЕДАКТИРОВАТЬ: после решения, где дано
Первое решение
clear all
clc
x=1:0.1:50;
A = rand(1000,1000);
tic
val = bsxfun(@times,A,permute(x,[3 1 2]));
out = reshape(permute(val,[1 3 2]),size(val,1)*size(val,3),[]);
toc
Выход:
Elapsed time is 7.597939 seconds.
Второе решение
clear all
clc
x=1:0.1:50;
A = rand(1000,1000);
tic
Ps = kron(x.',A);
toc
Выход:
Elapsed time is 48.445417 seconds.