matlab - 从矩阵中获取向量(quiverplot)

时间:2012-06-05 19:12:59

标签: matlab

我正在读取图像并将其存储到2d矩阵中。在对它进行一些计算后,如下所示:

im = rgb2gray(imread('ellipse.png'));
im = im(:,:,1);
w = size(im,1);                   
h = size(im,2);                               
[dx,dy] = gradient(double(im));                
[x y] = meshgrid(1:h,1:w);                    
a = zeros(temp);
lambda = 1;
Ox =-1.^lambda.* -x;
Oy =-1.^lambda.* y;
hold on                                   
quiver(x,y,Ox,Oy)  

我从quiverplot中得到以下图片:

https://docs.google.com/file/d/0B0iDswLYaZ0zR2lUQ2NkZnd1QXM/edit?pli=1

我的问题是,如何从quiverplot中访问这些向量(箭头)?我需要稍后在交叉产品中使用这些向量。感谢。

1 个答案:

答案 0 :(得分:0)

一种简单的方法是将矩阵堆叠到一个大的NxMx3块中并像这样调用它:

myVectors = cat(3, Ox, Oy, zeros(size(Ox)));
someOtherVectors = myVectors+1;
result = cross(myVectors,someOtherVectors );

另一种方法是编写自己的交叉函数,如下所示:

function result = cross2d(Ax, Ay, Bx, By)
      result = Ax.*By - Ay.*Bx;
end

在你的代码中这样称呼它:

Mx = Ox + 1;
My = Oy + 1;

result2 = cross2d(Ox, Oy, Mx, My)

(请注意,我刚刚制作了一组新的向量,通过添加一个来反对交叉产品......你会使用自己的)