Метод 1: генерация PAM-сигнала с плоской вершиной
% Parameters
fs = 1000; % Sampling frequency
T = 1; % Symbol duration
A = 1; % Signal amplitude
% Generate PAM signal
t = 0:1/fs:T-1/fs; % Time vector
data = [1 0 1 1 0 1 0 1]; % Binary data sequence
symbols = 2*data - 1; % Convert binary sequence to PAM symbols
pam_signal = kron(symbols, ones(1, fs)); % Repeat each symbol fs times
% Plot the PAM signal
plot(t, pam_signal);
xlabel('Time');
ylabel('Amplitude');
title('Flat Top PAM Signal');
Метод 2: демодуляция PAM-сигнала с плоской вершиной
% Parameters
fs = 1000; % Sampling frequency
T = 1; % Symbol duration
A = 1; % Signal amplitude
% Generate PAM signal
t = 0:1/fs:T-1/fs; % Time vector
data = [1 0 1 1 0 1 0 1]; % Binary data sequence
symbols = 2*data - 1; % Convert binary sequence to PAM symbols
pam_signal = kron(symbols, ones(1, fs)); % Repeat each symbol fs times
% Add noise to the PAM signal
SNR = 10; % Signal-to-Noise Ratio in dB
noise = randn(size(pam_signal)); % Generate Gaussian noise
noise_power = sum(abs(pam_signal).^2) / (fs * T * 10^(SNR/10)); % Calculate noise power
noisy_pam_signal = pam_signal + sqrt(noise_power) * noise; % Add noise to the PAM signal
% Demodulate the PAM signal
demodulated_signal = abs(noisy_pam_signal) > 0.5; % Thresholding to recover binary data
% Plot the demodulated signal
plot(t, demodulated_signal);
xlabel('Time');
ylabel('Amplitude');
title('Demodulated PAM Signal');
Обратите внимание, что это базовые примеры, демонстрирующие методы модуляции и демодуляции PAM с плоской вершиной. Вы можете изменить код в соответствии с вашими требованиями.