sir,i am new to matlab . I received an error saying Index exceeds matrix dimensions..Here is the code for channelization.

조회 수: 1 (최근 30일)
clc;
%DVB-T 2K Transmission
%The available bandwidth is 8 MHz
%2K is intended for mobile services
clear all;
close all;
%DVB-T Parameters
Tu=224e-6; %useful OFDM symbol period
T=Tu/2048; %baseband elementary period
G=0; %choice of 1/4, 1/8, 1/16, and 1/32
delta=G*Tu; %guard band duration
Ts=delta+Tu; %total OFDM symbol period
Kmax=2000; %number of subcarriers
Kmin=0;
FS=4096; %IFFT/FFT length
q=10; %carrier period to elementary period ratio
fc=q*1/T; %carrier frequency
Rs=4*fc; %simulation period
t=0:1/Rs:Tu;
%Data generator (A)
M=Kmax+1;
rand('state',0);
a=-1+2*round(rand(M,1)).'+i*(-1+2*round(rand(M,1))).';
A=length(a);
info=zeros(FS,1);
figure(1);
stem(a );
info(1:(A/2)) = [ a(1:(A/2)).']; %Zero padding
info((FS-((A/2)-1)):FS) = [ a(((A/2)+1):A).'];
%Subcarriers generation (B)
carriers=FS.*ifft(info,FS);
tt=0:T/2:Tu;
figure(2);
subplot(211);
stem(tt(1:400),real(carriers(1:400)));
title('subcar generation');
subplot(212);
stem(tt(1:400),imag(carriers(1:400)));
figure(3);
f=(1:(FS))/(FS);
subplot(211);
plot(f,abs(fft(carriers,FS)/FS));
figure(4);
l=length(abs(fft(carriers)));
w=hamming(l);
stem(w);
fs=4096/Tu;
df=1/Tu;
dalpha=2098/Tu;
x=carriers;
Np=pow2(nextpow2(fs/df));
L=Np/4;
P=pow2(nextpow2(fs/dalpha/L));
N=P*L;
% channelization
if length(x)<N
x(N)=0;
elseif length(x)>N
x=x(1:N);
end
NN=(P-1)*L+Np
xx=x
xx=xx(:)
p=ceil(P)
X=zeros(Np,ceil(p))
for k=0:p-1
X(:,k+1)=xx(k*L+1:k*L+Np);
end

채택된 답변

Greg
Greg 2018년 1월 20일
xx is length N = P*L. Inside the loop, the maximum iteration index is k*L+Np = (p-1)*L+4*L = (p+3)*L. Since p = ceil(P), (p+3)*L is guaranteed greater than P*L. Thus, your index into xx exceeds matrix dimensions.
The complete lack of structure in this code and variable naming makes this nearly impossible to decipher. You'd greatly benefit from spending a little effort to clean it up.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Signal Reception and Recovery에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by