根据循环百分比MATLAB,根据不同的时间点插入两个正弦波

时间:2017-10-25 13:43:29

标签: matlab interpolation

我有两个不同时间点的正弦波,如下所示:

t1=1:10;
y1=sin(t1);
per1=100./t1;

t2=1:12;
y2=sin(2*t2);
per2=100./t2;

正如您所看到的,其中一个y变量有12个时间点而另一个只有10个。如果我们将每个范围视为一个周期,并将其表示为百分比,我想将将10和12个时间点的正弦波放到相同的0-100%刻度上,然后求和。

使用这种技术,我将添加两个正弦波,不是基于时间而是基于周期的百分比。

1 个答案:

答案 0 :(得分:1)

您应该创建一些公共轴,并使用插值(例如interp1)来近似所有这些点的值。然后你可以添加它们。

% Your data, but with smaller intervals so it doesn't look like junk!
t1 = 1:0.01:10; y1 = sin(t1); 
t2 = 1:0.02:12; y2 = sin(2*t2);
% Interpolation to the highest number of points
N = max(numel(t1), numel(t2));
y1interp = interp1(t1, y1, linspace(min(t1), max(t1), N), 'linear');
y2interp = interp1(t2, y2, linspace(min(t2), max(t2), N), 'linear');
% Put on a common percentage axes with N points
pct = linspace(0, 1, N);
% Plot (or do whatever else!)
figure; hold on;
plot(pct, y1interp, '--r');
plot(pct, y2interp, '--b');
plot(pct, y1interp + y2interp, '-k');
hold off;

输出

output

注意:您可能需要阅读Nyquist's theorem - 您应该考虑将插值样本的常用数量N增加到我使用过的两倍...... / p>