2015-11-19 6 views
0

Я создал две синусоиды с разной частотой. Период времени для обеих волн составляет 2 секунды или 2000 мсек. Код работает хорошо, когда я нахожу значение корреляции за весь период времени. Buth Я хочу получить значения корреляции после каждого интервала в 200 мсек. Это означает, что мне нужен массив, который может хранить 10 значений корреляции для всех 2000 мсек. Вот код, как я рассчитываю корреляцию за период 2000 мсек.Как найти корреляцию между двумя синусоидальными волнами для определенных интервалов и сохранить значение в массиве?

delta=0.005; %200 hz Fs 
samples=200; 
t=0:delta:delta*(samples-1); % Time Samples 1second 
ch1 = sin(2*pi*10*t)'; 
ch2 = sin(2*pi*20*t)'; 
cc=corr2{ch1,ch2}; 
figure; bar(cc) 

Пожалуйста, помогите мне создать массив для вычисления значения корреляции на каждые 200 мсек.

ответ

0

Я не уверен, что именно ваш corr2{} делает, но по поводу вашего вопроса это создает свои 200мсы шаги:

связанного с вашим комментарием я добавил часть с N2 и N3, где N3_array теперь содержит сумму N3 в течение периода 200 мс

clear all 
delta=0.005; %200 hz Fs 
samples=200; 
t=0:delta:delta*(samples-1); % Time Samples 1second 
ch1 = sin(2*pi*10*t)'; 
ch2 = sin(2*pi*20*t)'; 
data=[ch1 ch2]; 

corr_period = 0.2; % in seconds (200 ms) 
nsteps = corr_period/delta; 
icorr = 1; 
cc = zeros(ceil(samples/nsteps),1); 
N3_array = zeros(ceil(samples/nsteps),2); 
for it = 1:nsteps :samples 
    %cc(icorr)=corr2{ch1(it:it+nsteps-1),ch2(it:it+nsteps-1)}; 
    N2=angle(data(it:it+nsteps-1 ,:)); 
    N3=sum([N2(:,1) N2(:,2)],1); 
    N3_array(icorr,:) = N3; 
    t_plot(icorr) = mean(t(it:it+nsteps-1)); 
    icorr = icorr+1; 
end 
figure; plot(t_plot,N3_array) 
legend('signal 1', 'signal 2') 

вам, возможно, потребуется скорректировать графа

+0

Спасибо большое за любезную помощь. Вот вопрос: что означает stepcorr? –

+0

@ Хафса Ахмад: должно быть, он исправил его. – horseshoe

+0

Что делать, если я хочу сделать то же самое для следующего случая (см. Ниже) –