你好,我有一个矩阵
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 1],非常深蓝色对应于第12行[2 2 3]。
我的问题:
1)如何对中间行进行智能排序,如中间行采用中间蓝调?(一排排的总和?)
2)如何创建这样的蓝色地图?
谢谢!
发布于 2014-12-03 17:06:46
看看这对你有用吗-
[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值都是行号2和4的4。
编辑
这部分代码扩展了先前的代码,以保持同一组元素的相同强度(列-3)-
[~,~,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产出-
>> Aout
Aout =
1 1 1
1 1 1.33333333333333
1 2 1.33333333333333
2 1 1.33333333333333
1 1 2
1 2 2
2 1 2
2 2 2
1 2 2.66666666666667
2 1 2.66666666666667
2 2 2.66666666666667
2 2 3
>> out
out =
0.333333333333333 0.333333333333333 0.333333333333333
0.333333333333333 0.333333333333333 0.444444444444444
0.333333333333333 0.666666666666667 0.444444444444444
0.666666666666667 0.333333333333333 0.444444444444444
0.333333333333333 0.333333333333333 0.666666666666667
0.333333333333333 0.666666666666667 0.666666666666667
0.666666666666667 0.333333333333333 0.666666666666667
0.666666666666667 0.666666666666667 0.666666666666667
0.333333333333333 0.666666666666667 0.888888888888889
0.666666666666667 0.333333333333333 0.888888888888889
0.666666666666667 0.666666666666667 0.888888888888889
0.666666666666667 0.666666666666667 1https://stackoverflow.com/questions/27276453
复制相似问题