۱ مطلب با کلمه‌ی کلیدی «#Modulation» ثبت شده است

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  است، فاز سیگنال حامل توسط رادیان های پی جابه جا می شود.

۰ ۰ ۰ دیدگاه


تبلیغات
Blog.ir بلاگ، رسانه متخصصین و اهل قلم، استفاده آسان از امکانات وبلاگ نویسی حرفه‌ای، در محیطی نوین، امن و پایدار
bayanbox.ir صندوق بیان - تجربه‌ای متفاوت در نشر و نگهداری فایل‌ها، ۳ گیگا بایت فضای پیشرفته رایگان
Bayan.ir - بیان، پیشرو در فناوری‌های فضای مجازی ایران