![]() |
在Matlab中平铺矩阵
这是一个有趣的问题:)
我有两个像汉克尔函数那样对常规顶点进行平铺的“矩阵向量”。例如:列向量: 10 00 20 00 30 00 行向量: 30 40 50 60 00 00 00 00 结果矩阵必须为: 10 20 30 40 00 00 00 00 20 30 40 50 00 00 00 00 30 40 50 60 00 00 00 00 请注意,可以更改0值,结果结构是重要的部分。 一个相关的问题:我查看了命令“ edit repmat”,发现一些有趣的语法,我无法找到帮助: A=[1,3;2,4]; X=[1,1;2,2]; B=A(X,X); B最终成为 1 3 1 3 2 4 2 4 1 3 1 3 2 4 2 4 这基本上是repmat(A,2,2); 所以我的问题是,这是什么语法:A(X,X)? 非常感谢! 奥弗 [B]回答:[/B] 如果要以[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/hankel.html"]HANKEL[/URL] [I]值[/I]的方式平铺一组[I]矩阵,[/I]则可以[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/hankel.html"]采用以下[/URL]一种方法。首先,您可以将所有唯一矩阵放在一个单元格阵列中: mat = [1 0; 0 0]; cArray = {mat 2.*mat 3.*mat 4.*mat 5.*mat 6.*mat}; %# Your 6 unique matrices 现在,如果要让前三个矩阵沿着第一列运行,最后四个矩阵跨最后一行运行,则可以使用[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/hankel.html"]HANKEL[/URL]创建索引矩阵: >> index = hankel(1:3,3:6); index = 1 2 3 4 2 3 4 5 3 4 5 6 然后使用索引对您的单元格数组进行index并使用[URL="http://www.mathworks.com/access/helpdesk/help/techdoc/ref/cell2mat.html"]CELL2MAT[/URL]将结果单元格数组转换为一个矩阵: >> cell2mat(cArray(index)) ans = 1 0 2 0 3 0 4 0 0 0 0 0 0 0 0 0 2 0 3 0 4 0 5 0 0 0 0 0 0 0 0 0 3 0 4 0 5 0 6 0 0 0 0 0 0 0 0 0 对于问题的第二部分,当执行A(X,Y)类的索引操作时,您将X的元素用作行索引,将Y的元素用作A列索引。 [I]使用[/I] X和Y中值的[I]每种组合[/I] 。因此,如果X = [x1 x2 x3 x4]和Y = [y1 y2 y3 y4] ,则B = A(X,Y)的结果等于: B = [A(x1,y1) A(x1,y2) A(x1,y3) A(x1,y4); ... A(x2,y1) A(x2,y2) A(x2,y3) A(x2,y4); ... A(x3,y1) A(x3,y2) A(x3,y3) A(x3,y4); ... A(x4,y1) A(x4,y2) A(x4,y3) A(x4,y4)]; [url=https://stackoverflow.com/questions/3187218]更多&回答...[/url] |
所有时间均为北京时间。现在的时间是 01:08。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.