创建彩色地图蓝色比例

时间:2014-12-03 16:12:30

标签: matlab matrix color-mapping

您好我有一个矩阵

A=[
1 1 1;
1 1 2;
1 1 3;
1 2 1;
1 2 2;
1 2 3;
2 1 1;
2 1 2;
2 1 3;
2 2 1;
2 2 2;
2 2 3]

包含向量V1 = [1 2], V2 = [1 2], V3 =[1 2 3]元素的笛卡尔积 特别是矩阵A的每一行都是V1 V2 V3

元素的组合

现在我想创建一个蓝色的彩色地图,其中浅蓝色对应第一行[1 1 1],深蓝色对应第12行[2 2 3]

我的问题:

1)如何以聪明的方式订购中间行,例如他们采用中间蓝调? (对行进行求和?)

2)如何创建这样的蓝色地图?

感谢!!!

1 个答案:

答案 0 :(得分:1)

看看这是否适合你 -

[sorted_sumcols,idx] = sort(sum(A,2)) %// sum over columns and sort based on the sum
Aout = A(idx,:) %// Aout holds the re-ordered rows of A

输出 -

Aout =
     1     1     1
     1     1     2
     1     2     1
     2     1     1
     1     1     3
     1     2     2
     2     1     2
     2     2     1
     1     2     3
     2     1     3
     2     2     2
     2     2     3

要进行验证,您可以查看

的值
sorted_sumcols =
     3
     4
     4
     4
     5
     5
     5
     5
     6
     6
     6
     7

因此,[1 1 2]属于[2 1 1]的同一组,因为他们的sorted_sumcols值的4行数2和{ {1}}。


修改

这段代码扩展了早期代码,以保持相同组元素的相同强度(第3列) -

4

输出 -

[~,~,ID] = unique(sorted_sumcols) %// IDs for each group
meanvals = accumarray(ID,Aout(:,3),[],@mean) %// mean values for each group
Aout(:,3) = meanvals(ID) %// replicate the mean values to each element
out = Aout./max(Aout(:)) %// finally divide by max of all elements to keep 
                             %//it in [0 1] as needed for custom colormaps