Skip to main content

MATLAB code for MSK



 Copy the MATLAB Code from here

 

MATLAB Code 

clc;
clear;
close all;

% Define a bit sequence
bitSeq = [0, 1, 0, 0, 1, 1, 1, 0, 0, 1];

% Perform MSK modulation
[modSignal, timeVec] = modulateMSK(bitSeq, 10, 10, 10000);

% Plot the modulated signal
subplot(2,1,1);
samples = 1:numel(bitSeq);
stem(samples, bitSeq);
title('Original message signal');
xlabel('Time (s)');
ylabel('Amplitude');

% Plot the modulated signal
subplot(2,1,2);
samples = 1:10000;
plot(samples / 10000, modSignal(1:10000));
title('MSK modulated signal');
xlabel('Time (s)');
ylabel('Amplitude');

% Perform MSK demodulation
demodBits = demodMSK(modSignal, 10, 10, 10000);

% Function to perform MSK modulation
function [signal, timeVec] = modulateMSK(bits, carrierFreq, baudRate, sampleFreq)
% Converts a binary bit sequence into an MSK-modulated signal
% Inputs:
% bits - Binary input sequence
% carrierFreq - Carrier frequency
% baudRate - Symbol rate
% sampleFreq - Sampling frequency
% Outputs:
% signal - Modulated MSK signal
% timeVec - Corresponding time vector

% Convert bits to NRZ format (-1, 1)
diffEncBits = 2 * bits - 1;
diffEncBits = [-1, diffEncBits]; % Append initial value

% Define time parameters
numBits = length(bits);
symbDur = 1 / baudRate;
timeVec = 0:1/sampleFreq:numBits * symbDur - (1/sampleFreq);

% Compute phase shifts
phaseShift = zeros(1, numBits + 1);
for idx = 2:numBits+1
phaseShift(idx) = mod(phaseShift(idx-1) + ((pi * idx) / 2) * (diffEncBits(idx-1) - diffEncBits(idx)), 2 * pi);
end
phaseShift = phaseShift(2:end);
diffEncBits = diffEncBits(2:end);

% Generate MSK waveform
symbolIdx = floor(timeVec / symbDur) + 1;
signal = cos(2 * pi * (carrierFreq + diffEncBits(symbolIdx) / (4 * symbDur)) .* timeVec + phaseShift(symbolIdx));
end

% Function to perform MSK demodulation
function bitSeq = demodMSK(signal, carrierFreq, baudRate, sampleFreq)
% Recovers a binary bit sequence from an MSK-modulated signal
% Inputs:
% signal - MSK-modulated input signal
% carrierFreq - Carrier frequency
% baudRate - Symbol rate
% sampleFreq - Sampling frequency
% Outputs:
% bitSeq - Demodulated binary sequence

symbDur = 1 / baudRate;
samplesPerSymbol = round(symbDur * sampleFreq);
numSamples = length(signal);

% Generate reference MSK waveforms for bits 0 and 1
refWave1 = modulateMSK([1], carrierFreq, baudRate, sampleFreq);
refWave0 = modulateMSK([0], carrierFreq, baudRate, sampleFreq);

bitSeq = logical.empty;

% Demodulation using correlation
for startIdx = 1:samplesPerSymbol:numSamples
if startIdx + samplesPerSymbol > numSamples
break;
end
sampleSegment = signal(startIdx:startIdx+samplesPerSymbol-1);

% Compute cross-correlation with reference waveforms
corr1 = xcorr(sampleSegment, refWave1);
corr0 = xcorr(sampleSegment, refWave0);

% Compare correlation values to determine bit
if max(corr1) + abs(min(corr1)) > max(corr0) + abs(min(corr0))
bitSeq = [bitSeq, 1];
else
bitSeq = [bitSeq, 0];
end
end
end

Output


 




In Minimum Shift Keying (MSK), the two frequencies used for 0 and 1 depend on the carrier frequency \( f_c \) and the baud rate \( R_b \) (symbols per second).

Formula for MSK frequencies:

The two frequencies are given by:

\[ f_0 = f_c - \frac{1}{4T} \] \[ f_1 = f_c + \frac{1}{4T} \]

where \( T = \frac{1}{\text{baud rate}} \) is the symbol duration.

Given values:

  • Carrier frequency: \( f_c = 10 \) Hz
  • Baud rate: \( R_b = 10 \) symbols/sec
  • Symbol duration: \( T = \frac{1}{10} = 0.1 \) sec

Now, calculating the frequencies:

\[ f_0 = 10 - \frac{1}{4 \times 0.1} = 10 - \frac{1}{0.4} = 10 - 2.5 = 7.5 \text{ Hz} \] \[ f_1 = 10 + \frac{1}{4 \times 0.1} = 10 + 2.5 = 12.5 \text{ Hz} \]

 

Minimum Shift Keying (MSK) Simulator






Differences Between MSK and FSK

 In FSK, if bits change from 0 to 1, and f₀ ≠ f₁, the carrier switches frequency — but phase continuity is not maintained unless explicitly enforced. This causes a sudden jump in phase at the bit boundary. In MSK, the phase is not static or abruptly switching. It evolves linearly over time based on the bit value, ensuring continuity. For bit duration Tb, the frequency deviation is: 
Δf = ±(1 / 4Tb)
[Read More in Detail ...]
 

Q & A and Summary

1. What is the mathematical representation of the MSK signal and what does it represent?

Answer: The MSK signal is mathematically represented as: $$ s(t) = a_I(t) \cos\left(\frac{\pi t}{2T}\right) \cos(\omega_c t) - a_Q(t) \sin\left(\frac{\pi t}{2T}\right) \sin(\omega_c t) $$ In this formula, \( a_I(t) \) and \( a_Q(t) \) encode the even and odd information respectively, using square pulses of duration \( 2T \). The \( \omega_c \) is the carrier angular frequency, and the terms involving cosine and sine functions describe how the signal's phase and frequency vary over time. This continuous-phase signal is essential for reducing spectral sidebands and interference.

2. How does the constant-modulus property of MSK help reduce distortion in communication systems?

Answer: The constant-modulus property of MSK ensures that the amplitude of the signal remains unchanged regardless of the phase. This is important because non-linear distortion in communication systems typically occurs when the signal's amplitude fluctuates. By maintaining a constant amplitude, MSK reduces the chances of distortion due to non-linearities in amplifiers and other components, thus ensuring cleaner signal transmission and better performance in systems that use non-linear power amplifiers.

3. What is Minimum Shift Keying (MSK) and how does it differ from OQPSK?

Answer: Minimum Shift Keying (MSK) is a type of continuous-phase frequency-shift keying. Unlike OQPSK, MSK encodes data using half sinusoidal pulses rather than square pulses. This leads to a constant-modulus signal, reducing distortion and spectral spread. While OQPSK also uses quadrature components, MSK offers improved signal quality by ensuring smoother phase transitions.

4. Why is the continuous-phase property of MSK important?

Answer: The continuous-phase property of MSK is crucial because it minimizes spectral sidebands. In traditional phase-shift keying schemes, abrupt phase shifts can cause wide sidebands, which interfere with adjacent channels. MSK's smooth and continuous phase changes ensure a narrower spectral occupancy, allowing for better utilization of the available bandwidth and reducing interference.

5. How does the frequency separation in MSK affect the modulation process?

Answer: The frequency separation in MSK ensures that the phase shift over a bit period is exactly ±Ï€/2. This specific frequency separation is what guarantees the smooth transitions between symbols, preventing abrupt phase changes. This also plays a critical role in maintaining the continuous-phase characteristic, which helps reduce spectral spreading and interference in the system.

6. Why is the phase modulation in MSK represented by \( \phi_k(t) = b(t) \frac{\pi t}{2T} + \phi_0 \)?

Answer: The phase modulation \( \phi_k(t) \) in MSK is represented as \( b(t) \frac{\pi t}{2T} + \phi_0 \) to ensure continuous, linear phase changes within each bit period. The term \( b(t) \) corresponds to the bit sequence, determining whether the phase shifts up or down. The factor \( \frac{\pi t}{2T} \) ensures that the phase modulation occurs smoothly over time, with no abrupt transitions, thus maintaining the continuous-phase property of MSK.

7. What makes MSK suitable for non-linear power amplifiers in communication systems?

Answer: MSK is suitable for non-linear power amplifiers because it has a constant-modulus signal. This means that the amplitude of the signal remains constant, regardless of the phase. Non-linear amplifiers work more efficiently when driven by signals with constant amplitude, as they avoid distortion that typically arises from varying amplitudes. This property of MSK allows for better power efficiency without compromising signal quality.


Further Reading

  1.  Minimum Shift Keying (MSK)
  2. Gaussian Minimum Shift Keying (GMSK)
  3. MATLAB code for GMSK
  4. Difference Between MSK and GMSK

Contact Us

Name

Email *

Message *

Popular Posts

Rayleigh vs Rician Fading (with MATLAB + Simulator)

  In Rayleigh fading , the channel coefficients tend to have a Rayleigh distribution, which is characterized by a random phase and magnitude with an exponential distribution. This means the magnitude of the channel coefficient follows an exponential distribution with a mean of 1. In Rician fading , there is a dominant line-of-sight component in addition to the scattered components. The channel coefficients in Rician fading can indeed tend towards 1, especially when the line-of-sight component is strong. When the line-of-sight component dominates, the Rician fading channel behaves more deterministically, and the channel coefficients may tend towards the value of the line-of-sight component, which could be close to 1.   MATLAB Script clc; clear all; close all; % Define parameters numSamples = 1000; % Number of samples K_factor = 5; % K-factor for Rician fading SNR_dB = 20; % Signal-to-noise ratio (in dB) % Generate complex Gaussian random variable for Rayleigh fading channel h_r...

UGC-NET Electronic Science Question Paper With Answer Key and Full Explanation [Dec 2023]

    UGC-NET Electronic Science Question Paper With Answer Key Download Pdf [Dec 2023] Download Question Paper               See Answers   2025 | 2024 | 2023 | 2022 | 2021 | 2020 UGC-NET Electronic Science  2023 Answers with Explanations 51. (A): The stacking fault is the most common area defect found in silicon. These faults typically occur along the 111 plane. In the crystalline structure of silicon, atoms are arranged in a specific pattern known as a diamond lattice. A stacking fault refers to a disruption in the normal order of atomic layers within this lattice, which usually occurs in the 111 plane due to the geometric arrangement of the atoms. This type of defect can affect the electrical and mechanical properties of the material, such as the mobility of charge carriers and mechanical strength. 52. (C): The important figure of merit for the microwave application of a Schot...

BER vs SNR for M-ary QAM, M-ary PSK, QPSK, BPSK, ...(MATLAB Code + Simulator)

Bit Error Rate (BER) & SNR Guide Analyze communication system performance with our interactive simulators and MATLAB tools. 📘 Theory 🧮 Simulators 💻 MATLAB Code 📚 Resources BER Definition SNR Formula BER Calculator MATLAB Comparison 📂 Explore M-ary QAM, PSK, and QPSK Topics ▼ 🧮 Constellation Simulator: M-ary QAM 🧮 Constellation Simulator: M-ary PSK 🧮 BER calculation for ASK, FSK, and PSK 🧮 Approaches to BER vs SNR What is Bit Error Rate (BER)? The BER indicates how many corrupted bits are received compared to the total number of bits sent. It is the primary figure of merit for a...

UGC NET Electronic Science Previous Year Question Papers

Home / Engineering & Other Exams / UGC NET 2022 PYQ 📥 Download UGC NET Electronics PDFs Complete collection of previous year question papers, answer keys and explanations for Subject Code 88. Start Downloading UGC-NET (Electronics Science, Subject code: 88) Subject_Code : 88; Department : Electronic Science; 📂 View All Question Papers Q. UGC Net Electronic Science Question Paper [June 2025] A. UGC Net Electronic Science Question Paper With Answer Key Download Pdf [June 2025] with full explanation Q. UGC Net Electronic Science Question Paper [December 2024] A. UGC Net Electronic Science Question Paper With Answer Key Download Pdf [December 2024] Q. UGC Net Electronic Science Question Paper [Aug 2024] A. UGC Net Electronic Scien...

OFDM Waveform with MATLAB Code (with Simulator)

  In OFDM (Orthogonal Frequency Division Multiplexing) , we transmit multiple orthogonal subcarriers simultaneously. Since the subcarriers are orthogonal , they do not interfere with each other, which is one of the main advantages of OFDM. Practically, OFDM converts a wideband signal into multiple narrowband orthogonal subcarriers. For typical wireless communication, if the signal bandwidth (or symbol duration) exceeds the coherence bandwidth of the channel, the signal experiences frequency-selective fading . Fading distorts the signal, making it difficult to recover the original information. By using OFDM, we transmit the same wideband signal across multiple orthogonal narrowband subcarriers, reducing the effect of fading. For example, if we want to transmit a signal of bandwidth 1024 kHz , we can divide it into N = 8 subcarriers . Each subcarrier is then spaced by: Δf = Total Bandwidth N = 1024 8 kHz...

Constellation Diagrams of ASK, PSK, and FSK (with MATLAB Code + Simulator)

Constellation Diagrams: ASK, FSK, and PSK Comprehensive guide to signal space representation, including interactive simulators and MATLAB implementations. 📘 Overview 🧮 Simulator ⚖️ Theory 📚 Resources Definitions Constellation Tool Key Points MATLAB Code 📂 Other Topics: M-ary PSK & QAM Diagrams ▼ 🧮 Simulator for M-ary PSK Constellation 🧮 Simulator for M-ary QAM Constellation BASK (Binary ASK) Modulation Transmits one of two signals: 0 or -√Eb, where Eb​ is the energy per bit. These signals represent binary 0 and 1. BFSK (Binary FSK) Modulation Transmits one...

Simulation of ASK, FSK, and PSK using MATLAB Simulink (with Online Simulator)

📘 Overview 🧮 How to use MATLAB Simulink 🧮 Simulation of ASK using MATLAB Simulink 🧮 Simulation of FSK using MATLAB Simulink 🧮 Simulation of PSK using MATLAB Simulink 🧮 Simulator for ASK, FSK, and PSK 🧮 Digital Signal Processing Simulator 📚 Further Reading ASK, FSK & PSK HomePage MATLAB Simulation Simulation of Amplitude Shift Keying (ASK) using MATLAB Simulink In Simulink, we pick different components/elements from MATLAB Simulink Library. Then we connect the components and perform a particular operation. Result A sine wave source, a pulse generator, a product block, a mux, and a scope are shown in the diagram above. The pulse generator generates the '1' and '0' bit sequences. Sine wave sources produce a specific amplitude and frequency. The scope displays the modulated signal as well as the original bit sequence created by the pulse generator. Mux i...

Theoretical vs. simulated BER vs. SNR for ASK, FSK, and PSK (MATLAB Code + Simulator)

📘 Overview 🧮 Simulator 💻 Theoretical Code 📊 Simulated Code 📚 Resources Overview BER vs. SNR denotes how many bits in error are received for a given signal-to-noise ratio, typically measured in dB. Common noise types in wireless systems: 🚀 1. Additive White Gaussian Noise (AWGN) 🌊 2. Rayleigh Fading AWGN adds random noise; Rayleigh fading attenuates the signal variably. A good SNR helps reduce these effects. Bit Error Rate (BER) Equations BER formulas for ASK, FSK, and PSK modulation schemes. ASK BER = 0.5 × erfc(0.5 × √SNR) FSK BER = 0.5 × erfc(√(SNR / 2)) PSK BER = 0.5 × erfc(√SNR) erfc / Q-function (Click here) Live BER S...