我在 Matlab 中有两个时间信号
y1(t1)
和 y2(t2)
,请参见第一个图。 t1
和t2
的采样率不同(t2
的采样率较低)。
目标:我想根据
y1
的值屏蔽y2
:当y2
为零时,y1
应该为零。
问题:由于采样率不同,我很难实现这一点 --> 你有想法吗?
第二张图显示了
y3
(= 屏蔽 y1
)(绿色)所需的输出。
t1 = 0:0.01:10;
y1 = sin(t1*10);
% plot(t1, y1)
t2 = 0:1:10;
y2 = t2.*[0 1 1 0 0 1 1 1 1 0 0];
% stairs(t2, y2)
plot(t1, y1)
hold on
stairs(t2, y2)
hold off
% I need a y3 with time t1.
% y3 is zero when y2 is zero.
% y3 = ???
y1(t1) [蓝色] 和 y2(t2) [橙色] 的电流输出:
y3(t1) [绿色] 的所需输出:
您可以对
y2
进行上采样以与 y1
共享时基:
% upsample y2 to share timebase t1. 'previous' interp used to mimic
% 'stairs' behaviour, i.e. hold previous value
y2_us = interp1(t2,y2,t1,'previous');
然后根据
y3
和 y1
创建新数组 y2
:
% Create y3 with timebase t1: =y1 if y2>0, =0 otherwise
y3 = y1 .* (y2_us>0);
确认图:
plot(t1, y1)
hold on
stairs(t2, y2)
plot(t1, y3)
hold off