Размер 1 зафиксирован на левой стороне, но изменяется справа ([84480 x 1] в Matlab - PullRequest
0 голосов
/ 23 мая 2019

Мне нужно исправить этот код, он говорит: «Размер 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

1 Ответ

0 голосов
/ 23 мая 2019

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

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
...