The following Matlab code runs only half of the for loop. Can anyone help me figure out the problem?
    4 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    jarul
 el 28 de Abr. de 2020
  
    
    
    
    
    Comentada: jarul
 el 29 de Abr. de 2020
            Here is the part of the matlab Code that I was working for an SDR development.
In the following code, when the ind in the for loop below exceeds four or more than 
half fo the loop, it stops and gives me an error.
Can someone help me and let me know the reason why it happens in MATLAB.
// The code begins here.
NumFrames =10;
%% Build OFDM Modulator
FFTLength            = 64;
NumGuardBandCarriers = [6; 5];
NumDataCarriers      = 48;
CyclicPrefixLength   = 16;
PilotCarrierIndices  = [12;26;40;54];
NumOFDMSymInPreamble = 5;
NumBitsPerCharacter  = 7;
SampleRate = 20e6;
Fs = SampleRate;
msgInBits = repmat(randi([0 1], NumDataCarriers, 1),10160, 1);
PayloadBits = msgInBits(:);
MSDU = ceil(length(PayloadBits)/(NumFrames*NumDataCarriers));
txData = zeros(0,1);
for ind = 0 : (NumFrames-1)
    framebody = PayloadBits((ind*MSDU*NumDataCarriers)+1:(NumDataCarriers*MSDU)*(ind+1),:);
    txData = [txData; framebody];
    PayloadBits((ind*MSDU*NumDataCarriers)+1:(NumDataCarriers*MSDU)*(ind+1),:)=[]; 
    if(ind == 4)  // When Ind exceeds more than half the loop, it creates error message.
        return
    end
end
1 comentario
  Steven Lord
    
      
 el 28 de Abr. de 2020
				What is the full and exact text of the error message you receive? Show all the text displayed in red and/or orange when you receive the error.
Respuesta aceptada
  Tommy
      
 el 28 de Abr. de 2020
        PayloadBits((ind*MSDU*NumDataCarriers)+1:(NumDataCarriers*MSDU)*(ind+1),:)=[];
This line changes the size of PayloadBits, but you have set up MSDU, NumDataCarriers, and ind based on the initial size of PayloadBits. Will it work if you omit this line? i.e.
for ind = 0 : (NumFrames-1)
    framebody = PayloadBits((ind*MSDU*NumDataCarriers)+1:(NumDataCarriers*MSDU)*(ind+1),:);
    txData = [txData; framebody];
end
Más respuestas (0)
Ver también
Categorías
				Más información sobre Communications Toolbox en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!