Pulse Code Modulation and Demodulation
Mostra commenti meno recenti
I have written a code to do Pulse Code Modulation but I am unable to retrieve the message signal back. Can someone please help me write demodulation code.
Here is what I have written for modulation
time = 0:0.0001:20;
const = input('Enter Bit Depth of PCM Coding:');
part = -1:0.1:1;
codebook = -1:0.1:1.1;
msg = sin(time);
[indx,quants] = quantiz(msg,part,codebook);
subplot(3,1,1);
plot(time,msg);
title('Message Signal');
subplot(3,1,2);
plot(time,quants);
title('Quantized Signal');
y = uencode(quants,const);
ybin = dec2bin(y,const);
subplot(3,1,3);
plot(time,y);
title('PCM PLOT');
How can I convert back the modulated signal to original.
1 Commento
Sushilkumar
il 6 Mag 2024
% Define the analog signal
t = 0:0.001:1; % Time vector from 0 to 1 second
Analog_Signal = sin(2*pi*5*t); % Example analog signal (sine wave)
% PCM parameters
bit_depth = 8; % Number of bits for quantization
quantization_levels = 2^bit_depth; % Total quantization levels
% Quantization
Quantized_Signal = round((Analog_Signal + 1) * (quantization_levels - 1) / 2);
% Demodulation
Demodulated_Signal = (2 * Quantized_Signal) / (quantization_levels - 1) - 1;
% Encoding PCM
Encoded_PCM = de2bi(Quantized_Signal, bit_depth, 'left-msb');
% Plotting
subplot(4,1,1);
plot(t, Analog_Signal);
title('Analog Signal');
xlabel('Time');
ylabel('Amplitude');
subplot(4,1,2);
stairs(t, Quantized_Signal);
title('Quantized Signal');
xlabel('Time');
ylabel('Amplitude');
subplot(4,1,3);
plot(t, Demodulated_Signal);
title('Demodulated Signal');
xlabel('Time');
ylabel('Amplitude');
subplot(4,1,4);
plot(t, Encoded_PCM);
title('Encoded PCM');
xlabel('Time');
ylabel('Bit');
Risposta accettata
Più risposte (4)
Asmita Jangam
il 8 Mag 2021
0 voti
c=input('Enter Bit Depth Of PCM Coding:');
Avinash
il 27 Mar 2023
0 voti
PCM Modulation and Demodulation using Trainer Kit and MATLAB
time = 0:0.0001:20;
const = input('Enter Bit Depth of PCM Coding:');
part = -1:0.1:1;
codebook = -1:0.1:1.1;
msg = sin(time);
[indx,quants] = quantiz(msg,part,codebook);
subplot(3,1,1);
plot(time,msg);
title('Message Signal');
subplot(3,1,2);
plot(time,quants);
title('Quantized Signal');
y = uencode(quants,const);
ybin = dec2bin(y,const);
subplot(3,1,3);
plot(time,y);
title('PCM PLOT');
Sudarshan
il 16 Lug 2023
Modificato: Walter Roberson
il 3 Mag 2024
clc;
close all;
clear all;
n=input('Enter n value for n-bit PCM system : ');
n1=input('Enter number of samples in a period : ');
L=2^n;
% % Signal Generation
% x=0:1/100:4*pi;
% y=8*sin(x); % Amplitude Of signal is 8v
% subplot(2,2,1);
% plot(x,y);grid on;
% Sampling Operation
x=0:2*pi/n1:4*pi; % n1 nuber of samples have tobe selected
s=8*sin(x);
subplot(3,1,1);
plot(s);
title('Analog Signal');
ylabel('Amplitude--->');
xlabel('Time--->');
subplot(3,1,2);
stem(s);grid on; title('Sampled Sinal'); ylabel('Amplitude--->'); xlabel('Time--->');
% Quantization Process
vmax=8;
vmin=-vmax;
del=(vmax-vmin)/L;
part=vmin:del:vmax; % level are between vmin and vmax with difference of del
code=vmin-(del/2):del:vmax+(del/2); % Contaion Quantized valuses
[ind,q]=quantiz(s,part,code); % Quantization process
% ind contain index number and q contain quantized values
l1=length(ind);
l2=length(q);
for i=1:l1
if(ind(i)~=0) % To make index as binary decimal so started from 0 to N
ind(i)=ind(i)-1;
end
i=i+1;
end
for i=1:l2
if(q(i)==vmin-(del/2)) % To make quantize value inbetween the levels
q(i)=vmin+(del/2);
end
end
subplot(3,1,3);
stem(q);grid on; % Display the Quantize values
title('Quantized Signal');
ylabel('Amplitude--->');
xlabel('Time--->');
% Encoding Process
figure
code=de2bi(ind,'left-msb'); % Cnvert the decimal to binary
k=1;
for i=1:l1
for j=1:n
coded(k)=code(i,j); % convert code matrix to a coded row vector
j=j+1;
k=k+1;
end
i=i+1;
end
subplot(2,1,1); grid on;
stairs(coded); % Display the encoded signal
axis([0 100 -2 3]); title('Encoded Signal');
ylabel('Amplitude--->');
% Demodulation Of PCM signal
qunt=reshape(coded,n,length(coded)/n);
index=bi2de(qunt','left-msb'); % Getback the index in decimal form
q=del*index+vmin+(del/2); % getback Quantized values
subplot(2,1,2); grid on;
plot(q);
% Plot Demodulated signal
title('Demodulated Signal');
ylabel('Amplitude--->');
xlabel('Time--->');
Categorie
Scopri di più su PCM in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!