Coincidence detector in Matlab

How to make coincidence detector on MATLAB In the picture, signal 5 is result of coincidence detector for signal 1 and signal 3
Signal 6 is result of coincidence detector for signal 2 and signal 4.
Thank you.

2 comentarios

Matt Kindig
Matt Kindig el 12 de Mzo. de 2013
Are you doing this in Matlab itself or Simulink?
Mail Abos
Mail Abos el 13 de Mzo. de 2013
just in Matlab

Iniciar sesión para comentar.

 Respuesta aceptada

Matt Kindig
Matt Kindig el 12 de Mzo. de 2013
Editada: Matt Kindig el 12 de Mzo. de 2013

0 votos

How about something like this? (I assume all signals are sampled synchronously).
edges1 = find(diff(Signal1) > 0); %get rising edges on Signal 1
edges3 = find(diff(Signal3) > 0); %get rising edges on Signal 3
commonEdges = intersect(edges1, edges3); %these are the indices of the coincident edges.
Note that this assumes that the rising edges are at identical locations. If there is any timing errors, this simple approach won't work.

2 comentarios

Mail Abos
Mail Abos el 13 de Mzo. de 2013
Editada: Mail Abos el 13 de Mzo. de 2013
We already try like this, but we get error problem, please help.
dt = 1e-9; % time increment (in seconds)
maxtime = 20e-6; % maximum length of signal (in seconds)
time = 0:dt:maxtime; % time samples (in seconds)
wavelength = 2e-6; % distance between beginning of each pulse
wavewidth = 0.5e-6; % width of each pulse
rectpulse = ones(1,round(wavewidth/dt)); % Define width of rectangle pulse
operator = zeros(size(time)); % Set operator to zeros
operator(mod(time,wavelength)==0) = 0.75; % Place 0.75 at each pulse location
rectsignal = conv(operator,rectpulse); % Convolve rectpulse w/ operator
rectsignal1 = rectsignal(1,1:length(time)); % Remove any extra
subplot(2,1,1); plot(time,rectsignal1);
title('signal1');
dt = 1e-9; % time increment (in seconds)
maxtime = 20e-6; % maximum length of signal (in seconds)
time = 0:dt:maxtime; % time samples (in seconds)
wavelength = 3e-6; % distance between beginning of each pulse
wavewidth = 0.5e-6; % width of each pulse
rectpulse = ones(1,round(wavewidth/dt)); % Define width of rectangle pulse
operator = zeros(size(time)); % Set operator to zeros
operator(mod(time,wavelength)==0) = 0.75; % Place 0.75 at each pulse location
rectsignal = conv(operator,rectpulse); % Convolve rectpulse w/ operator
rectsignal2 = rectsignal(1,1:length(time)); % Remove any extra
subplot(2,1,2); plot(time,rectsignal2);
title('signal2');
edges1 = find(diff(rectsignal1) > 0); %get rising edges on Signal 1
edges3 = find(diff(rectsignal2) > 0); %get rising edges on Signal 2
commonEdges = intersect(edges1, edges3); %these are the indices of the coincident edges
subplot(2,1,3); plot(commonEdges)
Error using subplot (line 308) Index exceeds number of subplots.
Matt Kindig
Matt Kindig el 14 de Mzo. de 2013
Is the subplot error you've indicated here your only problem? The error is thrown because
subplot(2,1,3)
attempts to create a 2x1 grid of two subplots. However, you are attempting to call subplot 3 (which does not exist). Change your subplot call to subplot(3,1,3) and it will work.

Iniciar sesión para comentar.

Más respuestas (0)

Preguntada:

el 12 de Mzo. de 2013

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by