Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
这是一个有趣的问题:)
我有两个像汉克尔函数那样对常规顶点进行平铺的“矩阵向量”。例如:列向量: 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)? 非常感谢! 奥弗 回答: 如果要以HANKEL 值的方式平铺一组矩阵,则可以采用以下一种方法。首先,您可以将所有唯一矩阵放在一个单元格阵列中: mat = [1 0; 0 0]; cArray = {mat 2.*mat 3.*mat 4.*mat 5.*mat 6.*mat}; %# Your 6 unique matrices 现在,如果要让前三个矩阵沿着第一列运行,最后四个矩阵跨最后一行运行,则可以使用HANKEL创建索引矩阵: >> index = hankel(1:3,3:6); index = 1 2 3 4 2 3 4 5 3 4 5 6 然后使用索引对您的单元格数组进行index并使用CELL2MAT将结果单元格数组转换为一个矩阵: >> 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列索引。 使用 X和Y中值的每种组合 。因此,如果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)]; 更多&回答... |
![]() |
![]() |