Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 3D按H、S、V排序_Matlab_Sorting_Colors - Fatal编程技术网

Matlab 3D按H、S、V排序

Matlab 3D按H、S、V排序,matlab,sorting,colors,Matlab,Sorting,Colors,在Matlab中,我想按特定顺序对颜色值进行排序。 比如说,按色调排序,然后是Sat,然后是强度(V)。或者,用V,H,然后S 大概是这样的: % UNSORTED A(:,:,1) = [1 1 1 1 1 2 2 2 1 1 1]; A(:,:,2) = [1 1 1 1 1 3 2 2 3 2 2]; A(:,:,3) = [3 1 4 3 2 1 2 1 1 2 1]; % RESULT A(:,:,1) = [1 1 1 1 1 1 1 1 2 2 2] A(:,:,2) =

在Matlab中,我想按特定顺序对颜色值进行排序。 比如说,按色调排序,然后是Sat,然后是强度(V)。或者,用V,H,然后S

大概是这样的:

% UNSORTED 
A(:,:,1) = [1 1 1 1 1 2 2 2 1 1 1]; 
A(:,:,2) = [1 1 1 1 1 3 2 2 3 2 2];
A(:,:,3) = [3 1 4 3 2 1 2 1 1 2 1];

% RESULT 
A(:,:,1) = [1 1 1 1 1 1 1 1 2 2 2]
A(:,:,2) = [1 1 1 1 1 2 2 3 2 2 3]
A(:,:,3) = [1 2 3 3 4 1 2 1 1 2 1]
我在这件事上挣扎了一天,运气不好。有什么帮助吗?

一种方法可以是:

% UNSORTED 
A(:,:,1) = [1 1 1 1 1 2 2 2 1 1 1]; 
A(:,:,2) = [1 1 1 1 1 3 2 2 3 2 2];
A(:,:,3) = [3 1 4 3 2 1 2 1 1 2 1];

for ii = 1:size(A,1)
    A(ii,:,:) = reshape(sortrows(squeeze(A(ii,:,:)),[1:3]),[1,size(A,2),size(A,3)])
end

因此,我们提取每个2D矩阵,我们使用
压缩
删除单例维度,然后使用
sortrows
对每行进行排序(优先级为1->2->3)。最后,我们对这个2D矩阵进行重塑,以恢复单体维度并获得3D矩阵。

您真的需要将
a
作为1x11x3数组吗?为什么不是11x3?我把问题简化了,请看下面更合适的MxNx3案例,谢谢。那么期望的结果是什么?请举例说明所需的输出;通过编辑你的问题,而不是回答,这是在将3D图像矩阵重塑为A在这里的样子,然后将排序后的图像重塑为原始图像之后才起作用的!非常感谢你!