Skip to main content

MATLAB 2D/3D Beamforming Simulation with Cross-Spectrum Analysis for Antenna Arrays

 

MATLAB Code

%% 2D Conceptual + Electronically Steered Beamforming
clc; clear; close all;
%% PARAMETERS
Fs = 1000; % Sampling frequency [Hz]
T = 1/Fs; % Sampling period
t = 0:T:1-T; % 1-second time vector
f_sig = 50; % Signal frequency [Hz]
%% SIMULATE ANTENNA SIGNALS
p = sin(2*pi*f_sig*t); % Reference signal (antenna p)
vx = 0.8*sin(2*pi*f_sig*t + pi/6); % vx antenna
vy = 0.6*sin(2*pi*f_sig*t + pi/4); % vy antenna
%% NORMALIZE SIGNALS
pnor = p / max(abs(p));
vxnor = vx / max(abs(vx));
vynor = vy / max(abs(vy));
%% PASSIVE ROTATION (Conceptual Beamforming)
I1 = real(fft(pnor) .* conj(fft(vxnor)));
I2 = real(fft(pnor) .* conj(fft(vynor)));
theta = 360 * atan(sum(I2)/sum(I1)) / (2*pi); % degrees
vc = vxnor * cosd(theta) + vynor * sind(theta);
resultant_passive = pnor + 2*vc;
%% ELECTRONICALLY STEERED BEAM
theta_steer = 60; % Desired steering angle in degrees
lambda = 1; % Normalized wavelength
d = 0.5*lambda; % Antenna spacing
% Phase shifts for each antenna
phi_vx = -2*pi*d/lambda * cosd(theta_steer);
phi_vy = -2*pi*d/lambda * cosd(theta_steer);
% Apply phase shifts (complex representation)
vx_steered = vxnor .* cos(phi_vx) - vxnor .* sin(phi_vx)*1j;
vy_steered = vynor .* cos(phi_vy) - vynor .* sin(phi_vy)*1j;
% Coherent sum and take real part for visualization
resultant_steered = real(pnor + vx_steered + vy_steered);
%% PLOT VECTORS IN 2D
figure('Color','w'); hold on; grid on; axis equal;
xlabel('vx'); ylabel('vy'); title('2D Beamforming: Passive vs Electronic Steering');
sample_idx = 200; % Sample to illustrate
% Original antenna vectors
quiver(0,0,vxnor(sample_idx),0,0,'r','LineWidth',2,'MaxHeadSize',0.5); % vx
quiver(0,0,0,vynor(sample_idx),0,'b','LineWidth',2,'MaxHeadSize',0.5); % vy
quiver(0,0,pnor(sample_idx)*cosd(45), pnor(sample_idx)*sind(45),0,'k','LineWidth',2,'MaxHeadSize',0.5); % reference
% Passive rotated vector
quiver(0,0,vc(sample_idx)*cosd(theta), vc(sample_idx)*sind(theta),0,'m','LineWidth',2,'MaxHeadSize',0.5);
%% ELECTRONICALLY STEERED BEAM (corrected)
theta_steer = 120; % Desired steering angle in degrees
lambda = 1; % Normalized wavelength
d = 0.5*lambda; % Antenna spacing
% Complex phase shifts for each antenna element (assuming linear array along x)
phi_vx = -2*pi*d/lambda * cosd(theta_steer);
phi_vy = -2*pi*d/lambda * cosd(theta_steer);
% Antenna phasors at the sample index (using normalized amplitudes and zero phase for simplicity)
vx_phasor = vxnor(sample_idx) * exp(1j*phi_vx);
vy_phasor = vynor(sample_idx) * exp(1j*phi_vy);
p_phasor = pnor(sample_idx); % reference antenna assumed at phase 0
% Sum phasors coherently
resultant_phasor = p_phasor + vx_phasor + vy_phasor;
% Plot the electronically steered beam as a 2D vector (real vs imag parts)
quiver(0, 0, real(resultant_phasor), imag(resultant_phasor), 0, ...
'g', 'LineWidth', 2, 'MaxHeadSize', 0.5);
% Annotate
legend('vx','vy','Reference p','Passive Rotation vc','Electronic Steering','Location','best');
% Show theta arcs
theta_rad_passive = deg2rad(theta);
r_arc = 0.4;
arc_x = r_arc*cos(linspace(0,theta_rad_passive,50));
arc_y = r_arc*sin(linspace(0,theta_rad_passive,50));
plot(arc_x, arc_y, 'm--','LineWidth',1.5);
text(0.15,0.05,['\theta_{passive} = ',num2str(theta,'%.2f'),'°'],'FontSize',12,'Color','m');
theta_rad_steer = deg2rad(theta_steer);
arc_x2 = r_arc*cos(linspace(0,theta_rad_steer,50));
arc_y2 = r_arc*sin(linspace(0,theta_rad_steer,50));
plot(arc_x2, arc_y2, 'g--','LineWidth',1.5);
text(0.15,0.1,['\theta_{steer} = ',num2str(theta_steer,'%.2f'),'°'],'FontSize',12,'Color','g');
xlim([-1 1]); ylim([-1 1]);
grid on;
 Output

 


Workflow of 2D Conceptual Beamforming Code

1. Signal Simulation

Simulate sinusoidal signals received by three antennas with phase offsets:

Reference signal (antenna p):

\( p(t) = \sin(2\pi f t) \)

Antennas vx and vy with phase shifts:

\( v_x(t) = A_x \sin(2\pi f t + \phi_x) \)

\( v_y(t) = A_y \sin(2\pi f t + \phi_y) \)

2. Normalization

Normalize signals to scale amplitude between -1 and 1:

pnor = p / max(abs(p));
vxnor = vx / max(abs(vx));
vynor = vy / max(abs(vy));

3. Cross-Spectrum Computation

Compute the cross-spectrum terms between the reference and antenna signals in frequency domain:

Let \( P(f) = \mathrm{FFT}[p_{nor}(t)] \), \( V_x(f) = \mathrm{FFT}[v_{x,nor}(t)] \), and \( V_y(f) = \mathrm{FFT}[v_{y,nor}(t)] \).

Cross-spectra are:

\[ I_1(f) = \Re \{ P(f) \cdot V_x^*(f) \} \]

\[ I_2(f) = \Re \{ P(f) \cdot V_y^*(f) \} \]

where \( ^* \) denotes complex conjugate and \( \Re \{ \cdot \} \) the real part.

4. Estimated Rotation Angle (Beam Direction)

Estimate the beam rotation angle \( \theta \) from the sum of the cross-spectrum components:

\[ \theta = \frac{360}{2\pi} \arctan\left( \frac{\sum_f I_2(f)}{\sum_f I_1(f)} \right) \]

This angle estimates the direction of arrival (DoA) or rotation needed to align the signals.

5. Beamforming Combination

Rotate antenna components using the estimated angle and combine signals for conceptual beamforming:

\[ v_c(t) = v_{x,nor}(t) \cos \theta + v_{y,nor}(t) \sin \theta \]

\[ \mathrm{Resultant}(t) = p_{nor}(t) + 2 v_c(t) \]

6. Visualization

  • Plot individual antenna signals and the combined beamformed output in the time domain.
  • Optionally plot frequency spectra and vector plots for conceptual illustration.

Summary

This workflow uses frequency-domain cross-spectra to estimate relative phases and direction, then applies rotation to combine signals coherently — the essence of beamforming.



Contact Us

Name

Email *

Message *

Popular Posts

MATLAB Code for Constellation Diagram of QAM configurations such as 4, 8, 16, 32, 64, 128, and 256-QAM

📘 Overview of QAM 🧮 4-QAM MATLAB 🧮 16-QAM MATLAB 🚀 Online Simulator 📂 Other Topics on Constellation Diagrams... ▼ 🧮 MATLAB Code for 4-QAM 🧮 MATLAB Code for 16-QAM 🧮 MATLAB Code for m-ary QAM 🧮 Simulator for m-ary PSK 🧮 Simulator for m-ary QAM 🧮 Overview of Energy per Bit (Eb / N0) 🧮 Simulator for ASK, FSK, and PSK Overview of QAM One of the best-performing modulation techniques is QAM [↗] . Here, we modulate the symbols by varying the carrier signal's amplitude and phase in response to the variation in the message signal (or voltage variation). So, we may say that QAM is a combination of phase and amplitude modulation. Additionally, it performs better than ASK or PSK [↗] . In fact, any constellation for any type of modulatio...

UGC NET Electronic Science Previous Year Question Papers with Solutions

Download Papers and Solutions Exam Pattern Preparation Tips FAQs More Home / Engineering & Other Exams / UGC NET 2026 PYQ 📊 Exam Highlights: Electronic Science (88) Feature Details Junior Research Fellowship (JRF) ₹37,000 + HRA per month Eligibility M.Sc/M.Tech in Electronics (55%) Validity of Certificate JRF (3 Years) | Lectureship (Lifetime) 📥 Download UGC NET Electronics PDFs Complete collection of previous year question papers, answer keys and explanations for Subject Code 88. Start Downloading 📂 View All Question Papers June 2026 - Question Paper Download PDF June 202...

Flat vs Frequency Selective Online Simulator

Flat vs Frequency Selective Online Simulator Channel Type Without Fading Flat Fading Multipaths Nakagami m SNR(dB) Run Simulation Input Signal Signal After Fading Constellation Diagram BER vs SNR Explore Advanced Flat vs Frequency-Selective Fading Simulator Want to see these equations in action? Visualize it. Launch Simulator Tool Flat Fading and Frequency-Selective Fading Effects of Multipath Components and the Nakagami-m Parameter 1. Flat Fading Flat fading occurs when the signal bandwidth is smaller than the channel's coherence bandwidth, meaning that all frequency components of the transmitted signal experience approximately the same fading. It is typically associated with narrowband signals, where the multipath delay spread is small relative to the symbol duration. ...

Orthogonal Time Frequency Space (OTFS) (with MATLAB)

In OTFS (Orthogonal Time Frequency Space) modulation — a scheme designed for high-Doppler and time-varying wireless channels — the terms ISFFT and SFFT are key mathematical transformations used to move between different representation domains. Figure: OTFS block diagram 1. ISFFT — Inverse Symplectic Finite Fourier Transform Purpose: Transforms data symbols from the delay-Doppler domain to the time-frequency domain . \[ X[n, m] = \frac{1}{\sqrt{NM}} \sum_{k=0}^{N-1} \sum_{l=0}^{M-1} x[k, l] \, e^{j2\pi \left( \frac{nk}{N} - \frac{ml}{M} \right)} \] Here, \( N \) is the number of Doppler bins (time slots), and \( M \) is the number of delay bins (subcarriers). The ISFFT maps each data symbol from the delay-Doppler grid (where the channel is sparse and easier to equalize) to the time-frequency grid (where standard multicarrier modulation like OFDM can be applied). 2. SFFT — Symplectic Finite Fourier Transform Purpose: Performs the reverse operation ...

Coherent vs. Non-Coherent Demodulation

  For demodulation In general: 1. Synchronous (coherent) demodulation Receiver generates a local carrier/oscillator . It combines/multiplies the received signal with that carrier. Then a filter extracts the message. Received signal ↓ × Local oscillator ↓ Low-pass filter ↓ Message So yes, carrier multiplication is a common implementation of synchronous demodulation . 2. Asynchronous (non-coherent) demodulation Receiver doesn't need a phase-synchronized local carrier . It uses properties of the received signal itself to recover the information. For ASK , an envelope detector is the classic example: ASK signal ↓ Diode + RC ↓ Envelope ↓ Comparator ↓ Data Modulation Synchronous demodulation Non-coherent/asynchronous demodulation ASK/OOK Local carrier + multiplier Envelope detector AM Product detector Envelope detector FSK Coherent correlator/mixer Frequency discriminator, filters, etc. PSK Local synchronized carrier + multiplier Differential/n...

Online Simulator for ASK, FSK, and PSK Signal Generation

Interactive Digital Signal Processing (DSP) Tutorial and Simulator for ASK, FSK, and BPSK modulation techniques. Try our new Digital Signal Processing Simulator!   •   Interactive ASK, FSK, and BPSK tools updated for 2025. Start Now Digital Modulation Visualizer: ASK, FSK, & BPSK Simulator Learn and visualize binary modulation techniques (ASK, FSK, BPSK) in real-time with adjustable carrier and sampling parameters. Perfect for DSP students and engineers. 📡 ASK Simulator 📶 FSK Simulator 🎚️ BPSK Simulator 📚 More Topics ASK Modulator FSK Modulator BPSK Modulator Demodulation More Topics 1. ASK (Ampli...

Random Variable vs. Random Process: Definitions, Examples, and Key Differences

Random Variable vs. Random Process: Definitions, Examples, and Key Differences Random Variable and Random Process In the fields of probability theory and statistics, understanding the distinction between a Random Variable and a Random Process (Stochastic Process) is fundamental. This guide breaks down these concepts with mathematical precision and practical examples. 1. Random Variable (RV) Definition: A Random Variable is a deterministic function that maps each possible outcome of a random experiment to a unique real number. Mathematical Representation A random variable X is defined as a mapping from the sample space S to the set of real numbers ℝ : X : S → ℝ S (Sample Space): The set of all possible outcomes of an experiment. s ∈ S: A specific outcome. X(s): The numerical value asso...