网格每个点的矩阵

时间:2018-05-02 17:50:30

标签: matlab matrix

所以我有一个网格

x = linspace(0,1,250);
y=x;
[X,Y] = meshgrid(x,y) ;

在每个点,我想要一个2x2矩阵(我会找到特征值)。但我无法找出最好的方法(没有循环整个250x250空间)。

假设每个X,Y的矩阵都是

M(1,1) = X
M(2,2) = Y
M(1,2) = sin(2*pi*X)
M(2,1) = X.*Y.^2; 

最好的方法是什么,然后得到每个X的特征值,Y?

1 个答案:

答案 0 :(得分:2)

不确定你的意思"最好",最快?如果我理解你想要的东西(每个像素2个特征值),这是一个简单的方法:

从您的定义开始

x = linspace(0,1,250);
y=x;
[X,Y] = meshgrid(x,y) ;
S=sin(2*pi*X);
XY2=X.*Y.^2; 

然后,我们可以使用linear indexing

for n=1:numel(X)
    M(:,n)=eig([X(n), S(n); XY2(n) , Y(n)]);
end

就是这样,所有信息都在M ... 我的笔记本电脑花了大约3秒钟。如果您希望在2x2矩阵的情况下更快地实现eig函数,则可以使用this。如果你想从线性索引返回到2D(i,j)索引,你可以使用它来获得像素i,j的特征值:

M(:, sub2ind(size(X),i,j))