![]() |
将3D矩阵与2D矩阵相乘
假设我有一个[B]AxBxC[/B]矩阵X和一个[B]BxD[/B]矩阵Y
是否有一种非循环方法,我可以通过该方法将每个[B]C[/B] [B]AxB[/B]矩阵乘以Y ? 回答: 您可以使用函数[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/num2cell.html"]NUM2CELL[/URL]将矩阵X分解为一个单元格数组,并使用[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/cellfun.html"]CELLFUN[/URL]在单元格[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/cellfun.html"]之间[/URL]进行操作,在[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/cellfun.html"]一行中[/URL]完成此操作: Z = cellfun(@(x) x*Y,num2cell(X,[1 2]),'UniformOutput',false); 结果Z是一个[B]1×C[/B]单元阵列,其中每个单元都包含一个[B]A×D[/B]矩阵。如果希望Z成为[B]A by D D by C[/B]矩阵,则可以使用[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/cat.html"]CAT[/URL]函数: Z = cat(3,Z{:}); [B]注意:[/B]我的旧解决方案使用[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/mat2cell.html"]MAT2CELL[/URL]而不是[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/num2cell.html"]NUM2CELL[/URL] ,它并不那么简洁: [A,B,C] = size(X); Z = cellfun(@(x) x*Y,mat2cell(X,A,B,ones(1,C)),'UniformOutput',false); [url=https://stackoverflow.com/questions/1745299]更多&回答...[/url] |
所有时间均为北京时间。现在的时间是 10:28。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.