Wpis z mikrobloga

Mam taki kod #matlab

% 1. Wygeneruj N=1000 próbek sygnału sinusoidalnego x(t)=Asin(2πfxt) o amplitudzie A=5 i o częstotliwości

% fx=10 Hz, spróbowanego z częstotliwością fp=1000 Hz. Narysuj ten sygnał.


N=1000; A=5; fx=10; fp=1000; % Parametry sygnału

dt=1/fp; % Okres próbkowania

t=dt*(0:N-1); % Wektor chwil próbkowania

x=A*sin(2*pi*fx*t); % Sygnał

plot(t,x);

grid;

title('Sygnał x(t)');

xlabel('czas [s]'); pause


% Oblicz wartości parametrów sygnału:

xsred1=mean(x)

xsred2=sum(x)/N % wartość średnia

xmax=max(x) % wartość maksymalna

xmin=min(x) % wartość minimalna

xstd1=std(x), xstd2=sqrt(sum((x-mean(x)).^2) / (N-1)) % odchylenie standardowe

x_eng=dt*sum(x.^2) % energia

x_moc=(1/N)*sum(x.^2) % moc średnia

xskut=sqrt(xmoc) % wartość skuteczna

% Oblicz i narysuj funkcję autokorelacji R1, R2 i R3 sygnału x(n).

R1=xcorr(x); % nieunormowana

R2=xcorr(x,'biased'); % unormowana przez długość /N

R3=xcorr(x,'unbiased'); % unormowana przez /(N-abs(k))

tR=[-fliplr(t) t(2:N)]; plot(tR,R1); grid; title('Autokorelacja'); pause

% Teraz sam wylicz R3

for k=0:N-1

R(k+1)= sum( x(1:N-k).*x(1+k:N))/(N-k)

end

R = [ fliplr(R) R(2:N-1) ];

plot(tR,R); grid; title('Autokorelacja wyliczona'); pause


Jednak wyskakuje mi błąd, że wektory nie mają tej samej długości i ostatni wykres się nie rysuje.
#octave
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach