Arrays Matlab中的阵列运算
我想要一个函数来计算以下操作: 我做了一个函数,它需要一个矩阵作为输入,并在另一个矩阵中返回每两行之间的距离 RGB_dist_完整定义: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).
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我在之前的问题中告诉过你要这样做,你也接受了我的答案。。。。我很好奇你为什么又问这个问题。哦是的。我很抱歉。我很匆忙地读了你的帖子,好像这里的解决方案,我把它标记为答案。我应该把它通读一遍。从现在起我会更加小心的。谢谢