如何找到矩阵中两点之间的位移矢量?

时间:2017-04-22 19:47:39

标签: matlab vector

示例:

example

公式:

formula

两点之间的差异得到矩阵的接收点的值的差异。如果可能的话,你能给我一个公式。

2 个答案:

答案 0 :(得分:0)

R ^ n中n维向量的两点之间的最小距离可以如下找到(例如:x = [1 3 5],y = [4 -4 7] 3-D点)

function result = minDistance (x, y) { 
 if ~isvector(x)
   error('Input must be a vector')
 result = sqrt(sum((x-y).^2))
end

如果需要任何其他信息,请解释公式,然后解决方案可以填满。

答案 1 :(得分:0)

根据您的澄清,我认为您只需要一个循环来完成这项工作。循环将遍历图片中的每个像素或点,将其与所有其他像素进行比较并计算位移矢量。

例如,如果你有10x10的图片,这意味着图片中有100个像素。对于每个像素,您可以计算99个位移矢量。对于整个图片,您将拥有99 * 100个位移矢量。

% read your picture
im = imread('myImage.jpg');
imageSize = size(im);
xsize = imageSize(1);
ysize = imageSize(2);

% construct pixel matrix
pixelPosXM = repmat(1:xsize, ysize, 1);
pixelPosYM = repmat(1:ysize, 1, xsize);
% convert into array
pixelPosX = pixelPosXM(:);
pixelPosY = pixelPosYM(:);
nsize = length(pixelPosX);

for i = 1:nsize
    % construct matrix for calculation
    px = repmat([pixelPosX(i), pixelPosY(i)], nsize - 1, 1);
    otherPixels = [pixelPosX, pixelPosY]; otherPixels(i,:) = [];
    % calculate displacement vectors
    displacementVectors(:,:,i) = [px - otherPixels];
end

如果您不熟悉三维矩阵,可以替换

displacementVectors(:,:,i) = [px - otherPixels];

displacementVectors{i} = [px - otherPixels];