您好我有一个矩阵
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)如何创建这样的蓝色地图?
感谢!!!
答案 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