Я использую MATLAB HDL кодер для преобразования Matlab кодировщик и в настоящее время некоторые ошибки
Я не могу удалить эту ошибку. Может кто-нибудь, пожалуйста, помогите мне. Проблема в том, что во время генерации кода 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
%испытательный стенд
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');
1 ответ
Ошибка говорит: "[...] неподдерживаемая динамическая матрица 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