Arrays Matlab中的阵列运算

Arrays Matlab中的阵列运算,arrays,matlab,vector,matrix,calculus,Arrays,Matlab,Vector,Matrix,Calculus,我想要一个函数来计算以下操作: 我做了一个函数,它需要一个矩阵作为输入,并在另一个矩阵中返回每两行之间的距离 RGB_dist_完整定义: function[D]=RGB_dist_full(x) I = nchoosek(1:size(x,1),2); D = RGB_dist(x(I(:,1),:), x(I(:,2),:)); squareform(D) end function[distance]=RGB_dist(x,y) distance=sqrt(sum((x-y).

我想要一个函数来计算以下操作:

我做了一个函数,它需要一个矩阵作为输入,并在另一个矩阵中返回每两行之间的距离

RGB_dist_完整定义:

function[D]=RGB_dist_full(x)

I = nchoosek(1:size(x,1),2);

D = RGB_dist(x(I(:,1),:), x(I(:,2),:));
squareform(D)

end
function[distance]=RGB_dist(x,y)

  distance=sqrt(sum((x-y).^2*[3;4;2],2));

end
RGB_区定义:

function[D]=RGB_dist_full(x)

I = nchoosek(1:size(x,1),2);

D = RGB_dist(x(I(:,1),:), x(I(:,2),:));
squareform(D)

end
function[distance]=RGB_dist(x,y)

  distance=sqrt(sum((x-y).^2*[3;4;2],2));

end
主程序如下所示:

    clc
    clear all

    rgbImage = imread('peppers.png');
    K=6;
    N=uint64(K*2); 

    rgb_columns = reshape(rgbImage, [], 3); 
    [unique_colors, m, n] = unique(rgb_columns, 'rows','stable'); 
    color_counts = accumarray(n, 1);

    [max_count, idx] = max(color_counts);

    Imgsize=size(rgbImage);

    U=unique_colors(1:N,:)
    size(U)

x=[62,29,64;
    63,31,62;
    65,29,60;
    63,29,62;
    63,31,62;];

   RGB_dist_full(x);
   RGB_dist_full(U);
为什么使用* MTIMES不完全支持 整数类。至少有一个输入 必须是标量。 要计算元素时间,请使用
对于函数的第二次调用,而第一次调用返回所需的输出?

对于这些类型的计算,您希望转换为双精度,因为
sqrt(integer)
通常不是整数。为此,读取图像后立即执行
double(rgbImage)

那么,为什么要保留这个整数作为开头(sqrt(integer)通常不是整数)?只要
double(rgbImage)
然后继续…@natan确实解决了问题。我会把这个作为答案添加进去…@TanatosDaniel我在之前的问题中告诉过你要这样做,你也接受了我的答案。。。。我很好奇你为什么又问这个问题。哦是的。我很抱歉。我很匆忙地读了你的帖子,好像这里的解决方案,我把它标记为答案。我应该把它通读一遍。从现在起我会更加小心的。谢谢