逻辑索引问题(组合两个具有不同采样率的向量)

问题描述 投票:0回答:1

我在 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) [橙色] 的电流输出:

enter image description here

y3(t1) [绿色] 的所需输出:

enter image description here

arrays matlab signal-processing
1个回答
0
投票

您可以对

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

plot

© www.soinside.com 2019 - 2024. All rights reserved.