matlab二维度矩阵转化三维_Matlab三维矩阵运算
三維矩陣按頁相乘:
問題:兩個三維矩陣,按頁進行矩陣相乘。
A = rand(a1,a2,n); B = rand(a2,b2,n); C = zeros(a1,b2,n); for i=1:n C(:,:,i) = A(:,:,i) *B(:,:,i) ;endmatlab工具包:mtimes
下載地址:
(1)mathworks網(wǎng)站:https://www.mathworks.com/matlabcentral/fileexchange/25977-mtimesx-fast-matrix-multiply-with-multi-dimensional-support
(2)github網(wǎng)站:https://github.com/cybertk/mtimesx
下載壓縮包,解壓后,找到src中的mtimesx_build.m文件,將第166行的代碼修改為:
mexopts = [prefdir 'mex_C_win64.xml'];
或者
mexopts = [prefdir 'mex_C++_win64.xml'];
修改后,運行mtimesx_build.m,運行成功后顯示如下:
在運行mtimesx_build.m后,有可能會出現(xiàn)錯誤,如下:
在文件夾“C:UsersAdministratorAppDataRoamingMathWorksMATLABR2018b”中查找,并沒有找到文件mex_C_win64.xml或者mex_C++_win64.xml。
解決辦法:首先確保安裝了Visual Studio編譯器,然后在Matlab命令行窗口執(zhí)行指令:
mex -setup C
或者
mex -setup C++
執(zhí)行命令后,會顯示
再去目錄...MathWorksMATLABR2018b中,可看到文件mex_C_win64.xml或者mex_C++_win64.xml已經(jīng)存在。
再次運行mtimesx_build.m,問題解決。
三維矩陣按頁運算:
A=rand(2,3,5); B=rand(3,4,5); C=mtimesx(A,B);那么得到的C(2,4,5)維度矩陣。
三維矩陣和二維矩陣相乘
問題:三維矩陣按頁和一個二維矩陣按列相乘。
A = rand(a1,a2,n); B = rand(a2,n); C = zeros(a1,n); for i=1:n C(:,i) = A(:,:,i) *B(:,i) ; end方法1:for循環(huán)
for i=1:nC(:,i) = A(:,:,i) *B(:,i) ; end方法2:arrayfun方法
[m,n] = meshgrid( 1:n, 1:a1 ); temp = arrayfun( @(x,y)A(x,:,y)*B(:,y), n(:), m(:) ); C = reshape(tempfibn, 3, []);方法3:將二維矩陣擴展成三維矩陣
tempB= reshape(B, a2,1,n); tempC= mtimesx(A, tempB); C = reshape(tempC, 3, []);總結(jié)
以上是生活随笔為你收集整理的matlab二维度矩阵转化三维_Matlab三维矩阵运算的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: element表格里面放图片_Eleme
- 下一篇: matlab dmodce,吧里有没有大