Robochameleon  v1.0
niceconstplots3a.m
1 % Robert Borkowski, rbor@fotonik.dtu.dk
2 % Technical University of Denmark
3 % v1.3a 29.11.2012
4 close all
5 cplx2mat = @(z)[real(z(:)) imag(z(:))];
6 xmodnorm = @(varargin)varargin{1}*modnorm(varargin{:});
7 
8 M = 16;
9 h = modem.qammod('M',M);
10 M = length(h.Constellation);
11 signal = h.modulate(randi([0 M-1],4e4,1));
12 signal = xmodnorm(signal,'avpow',1);
13 signal = awgn(signal,20,'measured');
14 figure,plot(signal,'.');
15 
16 x = cplx2mat(signal);
17 
18 neigh = zeros(size(x,1),1);
19 r = 0.1;
20 % xy = [r r];
21 for xi=1:size(x,1)
22  neigh(xi) = nnz(sum(bsxfun(@minus,x(xi,:),x).^2,2)<=r^2);
23 % neigh(xi) = nnz(all(bsxfun(@lt,abs(bsxfun(@minus,x(xi,:),x)),xy),2));
24 end
25 
26 figure
27 C = 64; % number of colors
28 % cmap = colormap(jet(C));
29 % cmap = colormap([linspace(0,0.85,C)' zeros(C,2)]);
30 % cmap = colormap(hot(C));
31 cmap = colormap(constcmap(C,[1 2])); %[1 2] red, [3 2] blue
32 cols = round(scaledata(neigh,1,size(cmap,1)));
33 for c=1:size(cmap,1)
34  points = x(cols==c,:);
35  plot(points(:,1),points(:,2),'Marker','.','LineStyle','none','Color',cmap(c,:));
36  hold on
37 end
38 axis square
39 caxis(lims(neigh));
40 colorbar