给定 f = @(x,y) [带有标量结果的东西]
,计算查找矩阵 A
的最佳方法是什么 >A(x,y) == f(x,y)
对于特定范围和域内的任何 x,y
?
假设一个名为 lookupTable(f,range,domain)
的函数做了我想要的。然后 lookupTable(@(x,y) x * y, 12, 12)
将生成一个矩阵,其中包含从 1*1=1
到 12 的乘法表*12=144
.
或者假设我想要一个 6x6 矩阵,除第 3 行第 5 列中的 1 外全为零。我可以编写 lookupTable(@(x,y) x==3&&y==5, 6, 6)
最佳答案
我会使用 MESHGRID 的组合为 x
和 y
和 ARRAYFUN 生成二维输入网格计算每个网格对处的标量函数 f
。对于您的第一个示例,您可以这样做:
[y, x] = meshgrid(1:12, 1:12); %# Or just [y, x] = meshgrid(1:12);
lutable = arrayfun(f, x, y);
请注意,我颠倒了 MESHGRID 的输入和输出顺序,以便 x
的值在生成的查找表的行中增加。
关于matlab - 如何将 f(x,y) 转换为二维矩阵(即查找表)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10065181/