Размер 1 фиксирован слева, но изменяется справа ([84480 x 1] в Matlab).

Мне нужно исправить этот код, он говорит: «Измерение 1 фиксируется слева, но изменяется справа ([84480 x 1]…»

Я пытаюсь использовать преобразователь с фиксированной точкой для преобразования этого кода. Однако у меня эта ошибка размерности 1 исправлена ​​​​слева ... для rxWaveform

rxWaveform = rxWaveform(1+offset:end,:);
function rxWaveform = new_synch(rxWaveform,pssRef)

%PSSIndices = ltePSSIndices(enb);         % getting PSS indexes
%pssGrid = lteDLResourceGrid(enb);       % generate empty sub frame for PSS symbols
%pssGrid(PSSIndices) = ltePSS(enb);      % map PSS symbols into the subframe
%pssRef = lteOFDMModulate(enb,pssGrid); % generate PSS reference signal via LTE OFDM

% getting the lenghts of the received waveform and PSS reference signal

rxSize = size(rxWaveform,1);
pssSize = size(pssRef,1);

% performing correlation between received waveform and pss symbols
pssCorr = xcorr(rxWaveform,pssRef);  

% segmenting resultant vector to identify the first local maximum
pssCorr = pssCorr(rxSize - pssSize:rxSize + pssSize,:);

% extract the index of first local maximum, M is not useful here, just for
% the output result 
[M,index] = max((abs(pssCorr)));

%calculating offset using local maximum
offset = index - pssSize -1;  % subtracted from 1 due to shift in the 



rxWaveform = rxWaveform(1+offset:end,:);





end


person mufty__py    schedule 23.05.2019    source источник


Ответы (1)


Здесь возможны два случая, но второй имеет больше смысла

Case1: просто обновите часть исходного массива и верните весь массивrxWaveform

Замените rxWaveform = rxWaveform(1+offset:end,:);
этим rxWaveform(1+offset:end,:) = rxWaveform(1+offset:end,:);

  • rxWaveform размер допустим 90000 by 1
  • rxWaveform(1+offset:end,:) размер 84480 by 1

Очевидно, что эти два измерения отличаются
Вы обновляете часть исходного rxWaveform
Поэтому вам нужно указать эту новую часть расположение, это (1+offset:end,:) слева


Case2: просто вернуть часть исходного массива rxWaveform(1+offset:end,:)

Если вы хотите вернуть только часть, а не весь rxWaveform, просто измените выходное имя функции, оно не должно быть rxWaveform, но может быть любым именем переменной, скажем, 'output'

Код выглядит следующим образом

function output = new_synch(rxWaveform,pssRef)

%PSSIndices = ltePSSIndices(enb);         % getting PSS indexes
%pssGrid = lteDLResourceGrid(enb);       % generate empty sub frame for PSS symbols
%pssGrid(PSSIndices) = ltePSS(enb);      % map PSS symbols into the subframe
%pssRef = lteOFDMModulate(enb,pssGrid); % generate PSS reference signal via LTE OFDM

% getting the lenghts of the received waveform and PSS reference signal

rxSize = size(rxWaveform,1);
pssSize = size(pssRef,1);

% performing correlation between received waveform and pss symbols
pssCorr = xcorr(rxWaveform,pssRef);  

% segmenting resultant vector to identify the first local maximum
pssCorr = pssCorr(rxSize - pssSize:rxSize + pssSize,:);

% extract the index of first local maximum, M is not useful here, just for
% the output result 
[M,index] = max((abs(pssCorr)));

%calculating offset using local maximum
offset = index - pssSize -1;  % subtracted from 1 due to shift in the 



output = rxWaveform(1+offset:end,:);





end
person Adam    schedule 23.05.2019