%% 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