2013-11-30 7 views
-3

Я получил это сообщение при попытке построить программу в Matlab:Как перевести окна Хэмминга в Matlab?

Error: 
Subscript indices must either be real positive integers or logicals. 

Error in Untitled (line 17) 
x(pocz:kon) = x(pocz:kon) .* H; 

Я знаю, что индекс является неправильным, но я не знаю, как это должно быть. Может ли кто-нибудь мне помочь?

Вот код:

clc; 
[x, fs, Nbits] = wavread('zero.wav'); % x -> data sampling | fs -> sampling freq | Nbits -> bits per sample 
subplot(2,1,1); plot(x); title('asd'); 
N = length(x); % 
HamWin = 240; % size of Hamming Window 
ShiftHamWin = 180; % shift of Hamming windwow 
Frames = N/ShiftHamWin; % 
%1. PREEMFAZA 
x = filter([1 -0.9735], 1, x); 
%---------------------------------------------------------------- 
%2. OKNO 
%x = x - mean(x); 
beg= 0; 
en = 180; 
H = hamming(HamWin); 
while(beg < N) 
x(beg:en) = x(beg:en) .* H; 
beg = round(en); 
en = round(en + 180); 
end; 
%----------------------------------------------------------------- 
subplot(2,1,2); plot(x); 
+2

Посмотрите, как правильно спросить SO [ask] –

+0

См. [Этот вопрос] (http://stackoverflow.com/questions/20054047/subscript-indices-must-either-be-real-positive-integers-or -logicals-generic-sol) для [общего способа обработки этого сообщения об ошибке] (http://stackoverflow.com/a/20054048/983722). - Отредактированный вопрос будет более подходящим для этого сайта. –

ответ

1

Ошибка, что я вижу:

линии 13 в коде: beg= 0; строка 17: x(beg:en) = x(beg:en) .* H;

индекс не может быть в MATLAB 0.

Смежные вопросы