这是一个有趣的问题:)
我有两个像汉克尔函数那样对常规顶点进行平铺的“矩阵向量”。例如:列向量:
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)];
更多&回答...