amdemod

Amplitude demodulation

Description

z = amdemod(y,Fc,Fs) returns a demodulated signal z, given the input amplitude modulated (AM) signal y, where the carrier signal has frequency Fc. The carrier signal and y have sampling frequency Fs. The modulated signal y has zero initial phase and zero carrier amplitude, resulting from a suppressed-carrier modulation.

Note

The value of Fs must satisfy Fs ≥ 2Fc.

z = amdemod(y,Fc,Fs,ini_phase) specifies the initial phase of the modulated signal in radians.

z = amdemod(y,Fc,Fs,ini_phase,carramp) demodulates a signal created through transmitted-carrier modulation instead of suppressed-carrier modulation, where carramp is the carrier amplitude of the modulated signal.

example

z = amdemod(y,Fc,Fs,ini_phase,carramp,num,den) specifies the numerator and denominator of the lowpass Butterworth filter used in the demodulation. The numerator and denominator are generated by [num,den] = butter(n,Fc*2/Fs), where n is the order of the lowpass filter.

Examples

collapse all

Set the carrier frequency to 10 kHz and sampling frequency to 80 kHz. Generate a time vector having a duration of 0.01 s.

fc = 10e3;
fs = 80e3;
t = (0:1/fs:0.01)';

Create a two-tone sinusoidal signal with frequencies 300 and 600 Hz.

s = sin(2*pi*300*t)+2*sin(2*pi*600*t);

Create a lowpass filter.

[num,den] = butter(10,fc*2/fs);

Amplitude modulate the signal s.

y = ammod(s,fc,fs);

Demodulate the received signal.

z = amdemod(y,fc,fs,0,0,num,den);

Plot the original and demodulated signals.

plot(t,s,'c',t,z,'b--')
legend('Original Signal','Demodulated Signal')
xlabel('Time (s)')
ylabel('Amplitude')

The demodulated signal is nearly identical to the original signal.

Input Arguments

collapse all

Amplitude modulated input signal, specified as a scalar, vector, matrix, or 3-D array. Each element of y must be real.

Data Types: single | double

Carrier signal frequency in hertz (Hz), specified as a positive real scalar.

Data Types: single | double

Sampling frequency of the carrier signal and input message signal in hertz (Hz), specified as a positive real scalar. To avoid aliasing, the value of Fs must satisfy Fs > 2(Fc + BW), where BW is the bandwidth of the original modulated signal.

Data Types: single | double

Initial phase of the modulated signal in radians, specified as a real scalar.

Data Types: single | double

Carrier amplitude of the modulated signal, specified as a real scalar.

Data Types: single | double

Lowpass Butterworth filter numerator, specified as a real scalar.

Data Types: single | double

Lowpass Butterworth filter denominator, specified as a real scalar.

Data Types: single | double

Output Arguments

collapse all

Amplitude demodulated output signal, returned as a scalar, vector, matrix, or 3-D array.

Introduced before R2006a