这是我的代码:
clear all;
%% Load the earthquake data file
load ECE350_Earthquake_Demo.mat
tearth = 0:dt:(length(d)-1)*dt;
t1 = tearth';
%% Play the sound of the earthquake
sound(d, fs)
figure,subplot(3, 1, 1); % 3 subplots in a 3x1 matrix
plot(t1,d) %% plots f(t)
title('First Subplot f(t)')
subplot(3, 1, 2);
plot(t1*2, d) %% plots f(2t)
title('Second Subplot f(2t)')
subplot(3, 1, 3);
plot(t1*(1/2), d) %% plots f(t/2)
title('Third Subplot f(t/2)')
xlim([0 20]);
orient landscape
delete 'Demo_plot1.pdf'
print -dpdf 'Demo_plot1'
此代码加载到地震数据文件中,并将输出绘制到图表上。
我将垂直绘制三个不同的子图,并分别绘制f(t),f(2t)和f(t / 2)。
f(2t)应压缩图形,f(t / 2)应自然地扩展图形。 我的代码执行相反的操作 - f(2t)压缩,f(t / 2)扩展(t1 * 2和t1 / 2是我实现它的方式)。
输出格式很好,一切正常。这两个图表刚刚切换。
为什么会这样?
答案 0 :(得分:0)
这是一种干净的方式,可以看到f(2t)
确实在MATLAB中压缩函数,就像你认为的那样:
t = 0:.1:2*pi;
figure
hold on
plot(t, sin(t))
plot(t, sin(2*t))
plot(t, sin(t/2))
legend({'sin(t)', 'sin(2t)', 'sin(t/2)'})
在我的示例中,这很有效,因为sin
连续:它可以将t
的任何值作为输入。在你的情况下,事情有点复杂,因为d
离散:有d(1)
,d(2)
,...,但没有{{ 1}}。
如果你只是想看到正确的情节",让我们将d(.5)
视为连续函数d
的样本,这样{{1}对于整数f
。然后,对于这些图,请选择d(n) = f(dt * n)
s,这样您就不需要n
之间的值:
t
绘制f(t / 2),因为当我们绘制f
点时,t值为t2 = t1 * 2;
plot(t2, d)
= i
且f(t)值为{{1} } = t2(i)
= t1(i) * 2
。
d(i)
绘制f(t * 2),因为当我们绘制f(dt * i)
点时,t值为f(t1(i))
= t3 = t1 / 2;
plot(t3, d)
且f(t)值为{{1} } = i
= t3(i)
。