Здесь возможны два случая, но второй имеет больше смысла
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