1 简介
在短距离无线通信中,无线节点或移动终端通常有低成本,小体积,低功耗的要求,因此无法使用 复杂的预失真或补偿电路克服功放的非线性影响,这是无线节点或移动终端在上行链路中难以使用高阶QAM调制的重要原因之一.基于QAM矩形星座的特点,提 出了一种K-means聚类的改进算法作为中央基站节点的高阶QAM解调算法.在发送信号受到较严重的功放非线性失真时,所提改进算法解调性能更优,算法 复杂度更低.
2 部分代码
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure
hold on
% %% Set up grid
meanlist = []; % list to append mean grid value to for surface-class grid
gridsize = 10000; % total grid area (no. cells)
gridx = 100; % length of x-axis
gridy= 100; % length of y-axis
alg_frac = 1; % percentage of algal coverage at start of experiment (all initialise as light algae: class 1)
non_alg_frac = gridsize-alg_frac; % residual = non-algal, assumed clean
% create grid by randomly spacing 1's and 2's in a 10x10 grid
alg_pixels = gridsize*(alg_frac/100)
non_alg_pixels = gridsize-alg_pixels
grid = reshape([zeros(non_alg_pixels,1) ; ones(alg_pixels,1)],gridx,gridy) ;
grid(:) = grid(randperm(numel(grid))) ;
for counter = 1:1:12
rand = randi(100,1); % return one pseudorandom integer between 1-100
for i = 2:1:gridx-1 %%%% NEED TO DEAL WITH EDGES BETTER!!!!
for j = 2:1:gridy-1 %%%% NEED TO DEAL WITH EDGES BETTER!!!!
if grid(i,j) == 0 % if cell = 0, 10% chance of bloom initiation, otherwise stay clean
if rand == 1
grid(i,j) = grid(i,j)+1;
else
grid(i,j) = grid(i,j);
end
elseif grid(i,j) < 10 % if cell is between 1 and 10, 40% chance of increasing in situ
if rand < 30
grid(i,j) = grid(i,j)+1;
elseif rand > 30 && rand < 80 % 40 % chance of bloom spreading, not darkening
rand1 = randi(8,1); % each neighbour has equal chance of being colonised
if rand1 == 1
grid(i,j+1) = grid(i,j+1)+1;
elseif rand1 == 2
grid(i,j-1) = grid(i,j-1)+1;
elseif rand1 == 3
grid(i+1,j+1) = grid(i+1,j+1)+1;
elseif rand1 == 4
grid(i+1,j-1) = grid(i+1,j-1)+1;
elseif rand1 == 5
grid(i+1,j) = grid(i+1,j)+1;
elseif rand1 == 6
grid(i-1,j) = grid(i-1,j)+1;
elseif rand1 == 7
grid(i-1,j-1) = grid(i-1,j-1)+1
elseif rand1 == 8
grid(i-1,j+1) = grid(i,j+1)+1
end
elseif grid(i,j) == 10 % if cell value is 10 bloom can only grow by spreading
if i < gridx && j < gridy && i >1 && j >1
if rand1 == 1
grid(i,j+1) = grid(i,j+1)+1;
elseif rand1 == 2
grid(i,j-1) = grid(i,j-1)+1;
elseif rand1 == 3
grid(i+1,j+1) = grid(i+1,j+1)+1;
elseif rand1 == 4
grid(i+1,j-1) = grid(i+1,j-1)+1;
elseif rand1 == 5
grid(i+1,j) = grid(i+1,j)+1;
elseif rand1 == 6
grid(i-1,j) = grid(i-1,j)+1;
elseif rand1 == 7
grid(i-1,j-1) = grid(i-1,j-1)+1;
elseif rand1 == 8
grid(i-1,j+1) = grid(i,j+1)+1;
end
else
grid(i,j) = grid(i,j);
end
end
end
end
end
meanlist(counter) = mean2(grid);
surf(grid);
view(2);
cbar = colorbar;
cbar.Limits=[0,10];
caxis([0,10]);
drawnow
pause(0.1)
% calls to SNICAR should go in here: populate second grid with albedos
end
3 仿真结果
4 参考文献
[1]彭军, 范兴山, 黄乐天,等. 一种用于解调失真QAM信号的改进K-means聚类算法[J]. 电子技术应用, 2014, 40(11):4.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。