Facultad de Ingeniería Mecánica y Eléctrica
Sistemas de Comunicaciones Móviles
Conceptos y Funciones MATLAB para OFDM
Estudiante:
César Alejandro Tolentino Mendoza
Profesor:
Dr. Leonel Soriano Equigua
Coquimatlán, Colima, 30 de mayo de 2025
1
Índice
1. Objetivos 4
2. Fundamentos matemáticos y de señal 4
2.1. 1. ¿Qué es una función? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2. 2. Funciones seno y coseno . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.3. 3. Vectores y magnitud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4. 4. Ortogonalidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.5. 5. Sistemas LTI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.6. 6. Transformada de Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.7. 7. Números complejos y Euler . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3. Conexión de los fundamentos con OFDM 7
4. Funciones MATLAB (código íntegro + explicación) 7
5. Conclusiones 10
Índice de figuras
1. Onda seno de 2 Hz con A = 1 y período T = 0,5 s. . . . . . . . . . . . . . . . 5
2. Vector v y sus componentes. . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3. Ortogonalidad: u · v = 0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3
1. Objetivos
Desarrollar un hilo conductor que lleve de los fundamentos matemáticos (función, seno,
vector, ortogonalidad, Fourier, sistemas LTI, números complejos) a la arquitectura
OFDM.
Integrar los listados MATLAB escritos en clase (.m) sin alteración, explicando cada
línea y mostrando ejemplos reproducibles.
2. Fundamentos matemáticos y de señal
2.1. 1. ¿Qué es una función?
Una función es una máquina que asigna a cada entrada una única salida (f : X → Y ).
Ejemplo: la expendedora (x = código, f (x) = bebida). En comunicaciones, la cadena
Modulación Canal Demodulación
bits −−−−−−→ señal x(t) −−−→ y(t) −−−−−−−−→ bits
es una función compuesta —clave para modelar y optimizar todo el sistema.
2.2. 2. Funciones seno y coseno
Una senoide general x(t) = A sin(2πf t + φ) tiene:
amplitud A (altura de la cresta),
frecuencia f (ciclos por segundo),
fase φ (desplazamiento).
4
Figura 1: Onda seno de 2 Hz con A = 1 y período T = 0,5 s.
Las senoides son los “ladrillos” con los que se arma cualquier señal periódica (serie de Fourier)
o aperiódica (transformada).
2.3. 3. Vectores y magnitud
2
√ Un vector es una flecha con magnitud y dirección. Ejemplo en R : v = (3, 2) con ∥v∥ =
13.
5
Figura 2: Vector v y sus componentes.
En procesado digital de señales, un bloque de N muestras se trata como x ∈ C N .
2.4. 4. Ortogonalidad
Dos vectores son ortogonales si su producto interno vale cero. En OFDM, las subporta-
doras (exponenciales complejas) satisfacen ⟨sk , sm ⟩ = 0 para k ̸= m dentro de la ventana de
símbolo.
Figura 3: Ortogonalidad: u · v = 0.
6
2.5. 5. Sistemas LTI
Un sistema Lineal Invariante
P en el Tiempo responde mediante convolución: y(t) = x(t) ∗
h(t). En discreto: y[n] = k h[k] x[n − k]. Esto modela un canal multipath.
2.6. 6. Transformada de Fourier
La transformada X(f ) = x(t)e−j2πf t dt convierte la convolución LTI en multiplicación:
R
Y (f ) = H(f ) X(f ). La versión discreta (DFT) se implementa eficientemente con la FFT.
2.7. 7. Números complejos y Euler
ejθ = cos θ + j sin θ permite representar una senoide con fase y amplitud en un único
número. Los símbolos QPSK/QAM son puntos en el plano I–Q (parte real vs. imaginaria).
3. Conexión de los fundamentos con OFDM
1. Senoides: cada subportadora es ej2πfk t .
2. Vectores: los símbolos a transmitir forman X = [X0 X1 . . . XN −1 ]⊤ .
3. IFFT: genera x = IFFT(X), suma de N senoides ortogonales.
4. Prefijo cíclico: vuelve la convolución con el canal circular ⇒ multiplicación subpor-
tadora a subportadora.
5. FFT: en el receptor recupera Y = H ⊙ X; basta dividir por Hk para ecualizar.
4. Funciones MATLAB (código íntegro + explicación)
mi_bpskmod.m
1 % mi_bpskmod.m - F u n c i n para modulaci n en BPSK
2 %
3 % Descripci n:
4 % Esta f u n c i n realiza la modulaci n BPSK de un vector de bits.
5 % La modulaci n BPSK asocia 0->-1 y 1->1: s = 2*b - 1
6 %
7 % Uso: simbs = mi_bpskmod(bits)
8 %
9 % Autor: C s a r Alejandro Tolentino Mendoza (c)
10 % Fecha: Abril de 2025
11 function [simbs]=mi_bpskmod(bits)
12 simbs = 2*bits - 1; % Transformaci n vectorizada
13 end
Explicación paso-a-paso
7
2*bits cambia {0,1}→{0,2}.
Restar 1 centra la constelación en {-1,1}.
Ejemplo
1 bits = [0 1 0 1 1 0];
2 simbs = mi_bpskmod(bits); % -> [-1 1 -1 1 1 -1]
3 stem(simbs); grid on; title(’ S m b o l o s BPSK’);
mi_bpskdemod.m
1 % Descripci n: Demodulaci n de s m b o l o s BPSK
2 % Autor: C s a r Alejandro Tolentino Mendoza (c)
3 function [bits] = mi_bpskdemod(simbs)
4 nsimbs = length(simbs); % n m e r o de s m b o l o s
5 bits = zeros(1, nsimbs); % pre-asigna
6 for ii = 1:nsimbs
7 if simbs(ii) <= 0 % umbral en cero
8 bits(ii) = 0;
9 else
10 bits(ii) = 1;
11 end
12 end
13 end
Ejemplo
1 bits_rx = mi_bpskdemod(simbs); % Recupera [0 1 0 1 1 0]
mi_qpskmod.m
1 % mi_qpskmod.m - F u n c i n para modulaci n en QPSK (codificaci n Gray)
2 % Autor: C s a r Alejandro Tolentino Mendoza (c)
3 function [simbolos] = mi_qpskmod(bits)
4 nbits = length(bits);
5 if mod(nbits,2) ~= 0
6 error(’El n m e r o de bits debe ser par.’);
7 end
8 nsimbolos = nbits/2;
9 simbolos = zeros(1, nsimbolos);
10 pos = 1;
11 for ii = 1:nsimbolos
12 b1 = bits(pos); % MSB
13 b0 = bits(pos+1); % LSB
14 pos = pos + 2;
15 if b1==0 && b0==0
16 simbolos(ii)=(-1-1j)/sqrt(2); % 00
17 elseif b1==0 && b0==1
18 simbolos(ii)=(-1+1j)/sqrt(2); % 01
19 elseif b1==1 && b0==1
8
20 simbolos(ii)=( 1+1j)/sqrt(2); % 11
21 else
22 simbolos(ii)=( 1-1j)/sqrt(2); % 10
23 end
24 end
25 end
Explicación
Comprueba paridad de bits.
Mapeo Gray asegura que errores cercanos alteren un solo bit.
Ejemplo
1 bits = [0 0 0 1 1 1 1 0];
2 sym = mi_qpskmod(bits);
3 scatter(real(sym),imag(sym),’filled’); axis equal
4 title(’Constelaci n QPSK Gray’);
mi_qpskdemod.m
1 % mi_qpskdemod.m - Demodulaci n QPSK Gray
2 function [bits]=mi_qpskdemod(simbolos)
3 nsimbolos = length(simbolos);
4 bits = zeros(1, nsimbolos*2);
5 pos = 1;
6 for s = simbolos
7 if real(s) >= 0
8 bits(pos) = 1;
9 bits(pos+1) = imag(s) >= 0;
10 else
11 bits(pos) = 0;
12 bits(pos+1) = imag(s) >= 0;
13 end
14 pos = pos + 2;
15 end
16 end
Ejemplo
1 bits_rec = mi_qpskdemod(sym); % Debe coincidir con bits
miDFT.m
1 % miDFT Calcula la matriz DFT de t a m a o N
2 function D=miDFT(N)
3 D = zeros(N,N);
4 for k = 1:N
5 for n = 1:N
6 D(k,n) = exp(-1j*2*pi*(k-1)*(n-1)/N);
9
7 end
8 end
9 end
Ejemplo y prueba de ortogonalidad
1 N=4; D=miDFT(N);
2 fprintf(’Error ortogonalidad: %.2e\n’, ...
3 norm(D*D’/N - eye(N),’fro’));
conv_matrix.m
1 % conv_matrix Crea la matriz de convoluci n lineal
2 function C = conv_matrix(x, h)
3 x = x(:); h = h(:); % fuerza vectores columna
4 Lx = length(x); Lh = length(h);
5 N = Lx + Lh - 1;
6 C = zeros(N, Lx);
7 for k = 1:Lx
8 C(k:k+Lh-1, k) = h; % copia h desplazado
9 end
10 end
Ejemplo (verificación)
1 x=[0.5 2]’; h=[1 1 1]’;
2 C=conv_matrix(x,h);
3 disp([C*x conv(x,h)’])
5. Conclusiones
Los conceptos de ortogonalidad, Fourier y números complejos dan sustento a OFDM; los
listados MATLAB presentados materializan estos principios permitiendo modular, demodular
y analizar señales en banda base. Con estas herramientas se dispone de una base robusta para
extenderse a una simulación OFDM completa (IFFT, prefijo cíclico, canal, FFT, BER, etc.).
Referencias
[1] J. Armstrong, “OFDM for Optical Communications,” Journal of Lightwave Technology,
27(3), 2009.
[2] J. G. Proakis, Digital Communications, 5. ed., McGraw-Hill, 2008.
[3] B. Sklar, Digital Communications: Fundamentals and Applications, 2. ed., Pearson, 2001.
10