Modulation
مدولاسیون آنالوگ
.
مدولاسیون دامنه
% AM Modulation
clc; clear; close all;
fc = 70; % carrier frequency
fm = 5; % message frequency
Ac = 1; % carrier amplitude
Am = 1; % message amplitude
t = 0:0.001:1; % time vector
m = Am*cos(2*pi*fm*t); % message signal
c = Ac*cos(2*pi*fc*t); % carrier signal
s = (Ac+m).*cos(2*pi*fc*t); % modulated signal
% Plotting
subplot(3,1,1);
plot(t,m,'r','LineWidth',2);
title('Message Signal');
xlabel('Time (s)');
ylabel('Amplitude (V)');
subplot(3,1,2);
plot(t,c,'g','LineWidth',2);
title('Carrier Signal');
xlabel('Time (s)');
ylabel('Amplitude (V)');
subplot(3,1,3);
plot(t,s,'LineWidth',2);
title('Modulated Signal');
xlabel('Time (s)');
ylabel('Amplitude (V)');
در این کد ، سیگنال پیام m با گرفتن کسینوس حاصلضرب 2*pi*fm*t تولید میشود، جایی که fm فرکانس پیام و t بردار زمان است. سیگنال حامل c به روشی مشابه با استفاده از فرکانس حامل fc تولید میشود. سیگنال مدولهشده s سپس با افزودن سیگنال پیام به دامنه حامل Ac و ضرب کردن نتیجه در سیگنال حامل تولید میشود.
در نهایت، کد سه سیگنال را با استفاده از تابع subplot ترسیم می کند تا آنها را در نمودارهای فرعی جداگانه نمایش دهد. از توابع عنوان، xlabel و ylabel برای افزودن عنوان و برچسب محور به نمودارها استفاده می شود.

.
.
.
.
مدولاسون فرکانس
% FM Modulation
clc; clear; close all;
fc = 30; % carrier frequency
fm = 5; % message frequency
Ac = 1; % carrier amplitude
Am = 1; % message amplitude
kf = 100; % frequency deviation constant
t = 0:0.001:1.5; % time vector
m = Am*cos(2*pi*fm*t); % message signal
c = Ac*cos(2*pi*fc*t); % carrier signal
s = Ac*cos(2*pi*fc*t + kf*cumsum(m)*0.001); % modulated signal
% Plotting
subplot(3,1,1);
plot(t,m,'r','LineWidth',2);
title('Message Signal');
xlabel('Time');
ylabel('Amplitude');
subplot(3,1,2);
plot(t,c,'g','LineWidth',2);
title('Carrier Signal');
xlabel('Time');
ylabel('Amplitude');
subplot(3,1,3);
plot(t,s,'LineWidth',2);
title('Modulated Signal');
xlabel('Time');
ylabel('Amplitude');
در این کد، سیگنال پیام m به صورت موج کسینوس با فرکانس fm و دامنه Am تولید میشود. سیگنال حامل c همچنین به صورت موج کسینوس با فرکانس fc و دامنه Ac تولید میشود. سیگنال مدولهشده s سپس با افزودن انتگرال سیگنال پیام )ضرب در ثابت انحراف فرکانس (kf به فاز سیگنال حامل تولید میشود. این منجر به سیگنالی می شود که فرکانس آن با توجه به سیگنال پیام تغییر می کند.

.
.
.
.
مدولاسیون فاز
% PM Modulation
clc; clear; close all;
% Define the message signal
fm = 10; % Message frequency
Am = 1; % Message amplitude
t = linspace(0,1,1000); % Time vector
m = Am*sin(2*pi*fm*t); % Message signal
% Define the carrier signal
fc = 50; % Carrier frequency
Ac = 1; % Carrier amplitude
c = Ac*sin(2*pi*fc*t); % Carrier signal
% Phase modulation
kf = 10; % Modulation index
s = Ac*sin(2*pi*fc*t + kf*m); % Modulated signal
% Plotting
subplot(3,1,1);
plot(t,m,'r','LineWidth',2);
title('Message Signal');
xlabel('Time (s)');
ylabel('Amplitude (V)');
subplot(3,1,2);
plot(t,c,'g','LineWidth',2);
title('Carrier Signal');
xlabel('Time (s)');
ylabel('Amplitude (V)');
subplot(3,1,3);
plot(t,s,'LineWidth',2);
title('Modulated Signal');
xlabel('Time (s)');
ylabel('Amplitude (V)');
در این کد، سیگنال پیام m برای تعدیل فاز سیگنال حامل c با استفاده از معادله s = Ac*sin (2*pi*fc*t + kf*m) استفاده میشود، که در آن kf شاخص مدولاسیون است. شاخص مدولاسیون میزان تغییر فاز سیگنال حامل را تعیین می کند. یک شاخص مدولاسیون بزرگتر منجر به انحراف فاز بزرگتر سیگنال حامل می شود.

مدولاسیون دیجیتال
.
مدولاسیون دامنه دیجیتال
% ASK modulation
clc; clear; close all;
data = [1 0 1 0 1 0 1 0 1 0 ]; % data to be transmitted
bitrate = 1; % bits per second
fc = 5; % carrier frequency
A1 = 1; % amplitude for data bit 1
A2 = 0; % amplitude for data bit 0
T = length(data)/bitrate; % full time of bit sequence
n = 1000;
N = n*length(data);
dt = T/N;
t = 0:dt:T;
x = zeros(1,length(t)); % data signal
c = sin(2*pi*fc*t); % carrier signal
y = zeros(1,length(t)); % ASK signal
for i=0:length(data)-1
if data(i+1) == 1
x(i*n+1:(i+1)*n) = A1;
y(i*n+1:(i+1)*n) = A1*sin(2*pi*fc*t(i*n+1:(i+1)*n));
else
x(i*n+1:(i+1)*n) = A2;
y(i*n+1:(i+1)*n) = A2*sin(2*pi*fc*t(i*n+1:(i+1)*n));
end
end
% plot the data signal, carrier signal, and modulated signal
subplot(3,1,1);
plot(t,x,'r','LineWidth',2);
axis([0 t(end) -0.5 1.5])
grid on;
title('Data Signal');
xlabel('Time');
ylabel('Amplitude');
subplot(3,1,2);
plot(t,c,'g','LineWidth',2);
axis([0 t(end) -1.5 1.5])
grid on;
title('Carrier Signal');
xlabel('Time');
ylabel('Amplitude');
subplot(3,1,3);
plot(t,y,'LineWidth',2);
axis([0 t(end) -A1-0.5 A1+0.5])
grid on;
title('ASK Modulated Signal');
xlabel('Time');
ylabel('Amplitude');
در این کد ، یک سیگنال داده،data یک سیگنال حامل c و یک سیگنال مدوله شده y را برای مدولاسیون ASK ترسیم می کند. ابتدا داده هایی که باید ارسال شوند، نرخ بیت،bitrate فرکانس حامل و دامنه های بیت های داده 1 و 0 تعریف می شوند. سپس تمام وقت دنباله بیت و سایر مقادیر محاسبه می شود. بعد سیگنال های داده، حامل و مدولع شده ایجاد می شوند. در نهایت این سه سیگنال رسم می شوند.
حلقه for در این کد برای ایجاد داده ها و سیگنال های مدوله شده استفاده می شود. حلقه از 0 تا طول داده منهای 1 اجرا می شود و در هر تکرار بررسی می کند که آیا بیت داده فعلی 1 است یا خیر. اگر بیت داده 1 باشد، دامنه سیگنال های داده و مدوله شده به A1 تغییر می کند. در غیر این صورت، دامنه داده ها و سیگنال های مدوله شده به A2 تغییر می کند.
سیگنال داده data نشان دهنده داده های دیجیتالی است که قرار است منتقل شود. سیگنال حامل یک موج سینوسی با فرکانس fc است. سپس با تغییر دامنه موج سینوسی حامل بر اساس داده های دیجیتال، سیگنال مدوله شده ایجاد می شود.

.
.
.
.
مدولاسیون فرکانس دیجیتال
% FSK modulation
clc; clear; close all;
data = [1 0 1 0 1 0 1 0 1 0 ]; % data to be transmitted
bitrate = 1; % bits per second
f1 = 10; % frequency for data bit 1
f2 = 5; % frequency for data bit 0
T = length(data)/bitrate; % full time of bit sequence
n = 1000;
N = n*length(data);
dt = T/N;
t = 0:dt:T;
x = zeros(1,length(t)); % data signal
c1 = sin(2*pi*f1*t); % carrier signal for data bit 1
c2 = sin(2*pi*f2*t); % carrier signal for data bit 0
y = zeros(1,length(t)); % FSK signal
for i=0:length(data)-1
if data(i+1) == 1
x(i*n+1:(i+1)*n) = 1;
y(i*n+1:(i+1)*n) = sin(2*pi*f1*t(i*n+1:(i+1)*n));
else
x(i*n+1:(i+1)*n) = -1;
y(i*n+1:(i+1)*n) = sin(2*pi*f2*t(i*n+1:(i+1)*n));
end
end
% plot the data signal, carrier signals, and modulated signal
subplot(4,1,1);
plot(t,x,'r','LineWidth',2);
axis([0 t(end) -1.5 1.5])
grid on;
title('Data Signal');
xlabel('Time');
ylabel('Amplitude');
subplot(4,1,2);
plot(t,c1,'g','LineWidth',2);
axis([0 t(end) -1.5 1.5])
grid on;
title('Carrier Signal for Data Bit 1');
xlabel('Time');
ylabel('Amplitude');
subplot(4,1,3);
plot(t,c2,'k','LineWidth',2);
axis([0 t(end) -1.5 1.5])
grid on;
title('Carrier Signal for Data Bit 0');
xlabel('Time');
ylabel('Amplitude');
subplot(4,1,4);
plot(t,y,'LineWidth',2);
axis([0 t(end) -1.5 1.5])
grid on;
title('FSK Modulated Signal');
xlabel('Time');
ylabel('Amplitude');
در این کد، دو فرکانس f1 و f2 به ترتیب برای بیت های داده 1 و 0 تعریف شده است. دادههایی که باید منتقل شوند در متغیر داده data تعریف میشوند .این کد سیگنال داده data، سیگنال های حامل برای بیت های داده 1 و 0 (c1 ,c2)و سیگنال مدوله شده FSK را با تغییر فرکانس سیگنال حامل بر اساس داده های در حال ارسال تولید می کند.
حلقه for در هر بیت داده تکرار می شود و مقدار سیگنال داده x و سیگنال مدوله شده FSK را بر اساس 1 یا 0 بودن بیت فعلی تنظیم می کند.

.
.
.
.
مدولاسیون فاز دیجیتال
% PSK modulation;
clc; clear; close all;
data = [1 0 1 0 1 0 1 0 1 0 ]; % data to be transmitted
bitrate = 1; % bits per second
fc = 5; % carrier frequency
T = length(data)/bitrate; % full time of bit sequence
n = 1000;
N = n*length(data);
dt = T/N;
t = 0:dt:T;
x = zeros(1,length(t)); % data signal
c = sin(2*pi*fc*t); % carrier signal
y = zeros(1,length(t)); % PSK signal
for i=0:length(data)-1
if data(i+1) == 1
x(i*n+1:(i+1)*n) = 1;
y(i*n+1:(i+1)*n) = sin(2*pi*fc*t(i*n+1:(i+1)*n));
else
x(i*n+1:(i+1)*n) = -1;
y(i*n+1:(i+1)*n) = sin(2*pi*fc*t(i*n+1:(i+1)*n) + pi);
end
end
% plot the data signal, carrier signal, and modulated signal
subplot(3,1,1);
plot(t,x,'r','LineWidth',2);
axis([0 t(end) -1.5 1.5])
grid on;
title('Data Signal');
xlabel('Time');
ylabel('Amplitude');
subplot(3,1,2);
plot(t,c,'g','LineWidth',2);
axis([0 t(end) -1.5 1.5])
grid on;
title('Carrier Signal');
xlabel('Time');
ylabel('Amplitude');
subplot(3,1,3);
plot(t,y,'LineWidth',2);
axis([0 t(end) -1.5 1.5])
grid on;
title('PSK Modulated Signal');
xlabel('Time');
ylabel('Amplitude');
در این کد، سیگنال داده x از یک داده توالی باینری ورودی data با تنظیم مقدار سیگنال داده بر روی 1 برای مدت یک بیت زمانی bitrate که بیت متناظر در دادهها 1 تا -1 است و هنگامی که بیت مربوطه در این داده 0 است.
سیگنال حامل c یک موج سینوسی با فرکانس fc است. سیگنال مدوله شده y با تغییر فاز سیگنال حامل بر اساس سیگنال داده تولید می شود. هنگامی که سیگنال داده 1 است، سیگنال حامل بدون تغییر است. هنگامی که سیگنال داده -1 است، فاز سیگنال حامل توسط رادیان های پی جابه جا می شود.



