28 lines
706 B
Matlab
28 lines
706 B
Matlab
%% Target source entropy for PS-PAM8
|
||
clear; clc;
|
||
|
||
M = 8;
|
||
a = -(M-1):2:(M-1); % PAM-8 amplitude levels: [-7 -5 -3 -1 1 3 5 7]
|
||
H_target = 2.79; % desired entropy [bits/symbol]
|
||
|
||
% Objective: find nu such that H(PA) = H_target
|
||
f = @(nu) entropy_MB(a,nu) - H_target;
|
||
nu_opt = fzero(f, [0, 2]); % search ν in reasonable range
|
||
|
||
% Compute final distribution
|
||
P = exp(-nu_opt*a.^2);
|
||
P = P/sum(P);
|
||
H = -sum(P .* log2(P));
|
||
|
||
fprintf('Shaping parameter ν = %.4f\n', nu_opt);
|
||
fprintf('Entropy H(A) = %.3f bits/symbol\n', H);
|
||
disp('Probability vector (P_A):');
|
||
disp(P.');
|
||
|
||
%% Helper: entropy function
|
||
function H = entropy_MB(a,nu)
|
||
P = exp(-nu*a.^2);
|
||
P = P/sum(P);
|
||
H = -sum(P .* log2(P));
|
||
end
|