Я использую MATLAB HDL кодер для преобразования Matlab кодировщик и в настоящее время возникают некоторые ошибки - PullRequest
0 голосов
/ 03 июля 2018

Я не могу удалить эту ошибку. Может кто-нибудь, пожалуйста, помогите мне. Проблема в том, что во время генерации кода hdl отображается какая-то ошибка на шаге 4.

 function [Rxx]=autom(X)    % [Rxx]=autom(x)
Rxx=zeros(1,1024);
for m=1: 1025
for n=1: 1025-m
Rxx(m)=Rxx(m)+X(n)*X(n+m-1);

end
end

% * 1004 испытательного стенда *

N=1024;                            % Number of samples
f1=1;                              % Frequency of the sinewave
FS=200;                            % Sampling Frequency
n=0:1023;                           % Sample index numbers
X=zeros(1,1024);
% X=sin(2*pi*1*(0:1023)/200);
X=sin((2*pi*1.*n)./200);
t=[1:1024]*(1/200);
%ti=f1*n/FS;
%x=sin(2*pi*ti);                    % Generate the signal, x(n) 
%t1=[1:N]; 
%t=t1*(1/FS);                          % Prepare a time axis

subplot(2,1,1);                    % Prepare the figure
plot(t,X);        
title('Sinwave of frequency 1000Hz [FS=8000Hz]');
xlabel('Time, [s]');
ylabel('Amplitude');
grid;

Rxx = autom(X(1:1024));                                % Calculate its autocorrelation
subplot(2,1,2);
plot(Rxx);
title('Autocorrelation function of the sinewave'); % Plot the autocorrelation 
xlabel('lags');
ylabel('Autocorrelation');

Errors i am getting

1 Ответ

0 голосов
/ 03 июля 2018

Ошибка говорит: «[...] неподдерживаемая динамическая матрица X [...]"

Ваша проблема в том, что в вашей функции вы выполняете X(n)*X(n+m-1);, и кажется, что вы понимаете, что это динамически меняет размер матрицы. Я подозреваю, что на самом деле ошибка в Rxx

Обратите внимание, что ваш X имеет длину 1024, но ваши итерации n и m имеют длину 1025. Rxx имеет длину 1024, но вы делаете Rxx(m), а m увеличивается до 1025, таким образом, динамически изменяя его размер (MATLAB увеличит размер Rxx с 1024 до 1025, динамически )

Вы уверены, что не хотите

function [Rxx]=autom(X)    % [Rxx]=autom(x)
Rxx=zeros(1,1024);
for m=1: 1024
  for n=1: 1024-m
    Rxx(m)=Rxx(m)+X(n)*X(n+m-1);
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...