Matlab 高维矩阵与向量的点乘 (Permute)
今天遇到一个问题,如何用一个n维的向量点乘一个 m × k × n m\times k\times n m×k×n 的矩阵, 并避免用循环。Matlab矩阵实验室名不虚传,通过permute这个命令可以有效解决这个问题。因此记录下来,以备不时之需 (几年前遇到过同样的问题,但是没做笔记,所以这次一定要记下来)。
a = [1,2,3]; % 这里需要注意Matlab是按列存储的;
test = repmat(a,3,1,3); % 把向量a复制成一个3*3*3的矩阵;
查看test矩阵
t e s t ( : , : , 1 ) = [ 1 2 3 1 2 3 1 2 3 ] , t e s t ( : , : , 2 ) = [ 1 2 3 1 2 3 1 2 3 ] , t e s t ( : , : , 3 ) = [ 1 2 3 1 2 3 1 2 3 ] test\left( :,: ,1\right) =\left[ \begin{matrix} 1& 2& 3\\ 1& 2& 3\\ 1& 2& 3\end{matrix} \right],test\left( :,: ,2\right) =\left[ \begin{matrix} 1& 2& 3\\ 1& 2& 3\\ 1& 2& 3\end{matrix} \right], test\left( :,: ,3\right) =\left[ \begin{matrix} 1& 2& 3\\ 1& 2& 3\\ 1& 2& 3\end{matrix} \right] test(:,:,1)=⎣⎡111222333⎦⎤,test(:,:,2)=⎣⎡111222333⎦⎤,test(:,:,3)=⎣⎡1