用matlab程序写出cos(pi*t/2)的傅里叶变换,尺度变化(在时域中扩展两倍),时移变换(延时1秒)
时间: 2024-02-13 14:03:29 浏览: 22
可以使用MATLAB中的fft函数来计算cos(pi*t/2)的傅里叶变换,然后通过改变时间向量t来实现尺度变换和时移变换。具体代码如下:
```matlab
% 定义时间向量
t = linspace(-10, 10, 2000);
% 计算函数值
x = cos(pi*t/2);
% 计算傅里叶变换
X = fftshift(fft(x));
% 计算频率向量
fs = 1/(t(2)-t(1));
f = linspace(-fs/2, fs/2, length(X));
% 绘制原始信号的幅度谱和相位谱
subplot(2,2,1);
plot(f, abs(X));
title('原始信号的幅度谱');
xlabel('频率');
ylabel('幅度');
subplot(2,2,2);
plot(f, angle(X));
title('原始信号的相位谱');
xlabel('频率');
ylabel('相位');
% 尺度变化(在时域中扩展两倍)
t2 = linspace(-20, 20, 4000);
x2 = cos(pi*t2/4);
X2 = fftshift(fft(x2));
% 绘制尺度变化后的信号的幅度谱和相位谱
subplot(2,2,3);
plot(f, abs(X2));
title('尺度变化后的信号的幅度谱');
xlabel('频率');
ylabel('幅度');
subplot(2,2,4);
plot(f, angle(X2));
title('尺度变化后的信号的相位谱');
xlabel('频率');
ylabel('相位');
% 时移变换(延时1秒)
t3 = linspace(-9, 11, 2000);
x3 = cos(pi*(t3-1)/2);
X3 = fftshift(fft(x3));
% 绘制时移变换后的信号的幅度谱和相位谱
figure;
subplot(2,2,1);
plot(f, abs(X3));
title('时移变换后的信号的幅度谱');
xlabel('频率');
ylabel('幅度');
subplot(2,2,2);
plot(f, angle(X3));
title('时移变换后的信号的相位谱');
xlabel('频率');
ylabel('相位');
% 绘制时移变换后的信号的时域图像
subplot(2,1,2);
plot(t3, x3);
title('时移变换后的信号');
xlabel('时间');
ylabel('幅度');
```
上述代码中,我们首先定义了一个时间向量t和一个函数x,然后使用fftshift和fft函数计算了x的傅里叶变换,并生成了频率向量f。接下来,我们定义了一个新的时间向量t2,并根据t2计算了尺度变化后的函数x2,然后使用fftshift和fft函数计算了x2的傅里叶变换,并绘制了幅度谱和相位谱。最后,我们又定义了一个新的时间向量t3,并根据t3计算了时移变换后的函数x3,然后使用fftshift和fft函数计算了x3的傅里叶变换,并绘制了幅度谱和相位谱,同时绘制了x3的时域图像。
完整代码如下:
```matlab
% 定义时间向量
t = linspace(-10, 10, 2000);
% 计算函数值
x = cos(pi*t/2);
% 计算傅里叶变换
X = fftshift(fft(x));
% 计算频率向量
fs = 1/(t(2)-t(1));
f = linspace(-fs/2, fs/2, length(X));
% 绘制原始信号的幅度谱和相位谱
subplot(2,2,1);
plot(f, abs(X));
title('原始信号的幅度谱');
xlabel('频率');
ylabel('幅度');
subplot(2,2,2);
plot(f, angle(X));
title('原始信号的相位谱');
xlabel('频率');
ylabel('相位');
% 尺度变化(在时域中扩展两倍)
t2 = linspace(-20, 20, 4000);
x2 = cos(pi*t2/4);
X2 = fftshift(fft(x2));
% 绘制尺度变化后的信号的幅度谱和相位谱
subplot(2,2,3);
plot(f, abs(X2));
title('尺度变化后的信号的幅度谱');
xlabel('频率');
ylabel('幅度');
subplot(2,2,4);
plot(f, angle(X2));
title('尺度变化后的信号的相位谱');
xlabel('频率');
ylabel('相位');
% 时移变换(延时1秒)
t3 = linspace(-9, 11, 2000);
x3 = cos(pi*(t3-1)/2);
X3 = fftshift(fft(x3));
% 绘制时移变换后的信号的幅度谱和相位谱
figure;
subplot(2,2,1);
plot(f, abs(X3));
title('时移变换后的信号的幅度谱');
xlabel('频率');
ylabel('幅度');
subplot(2,2,2);
plot(f, angle(X3));
title('时移变换后的信号的相位谱');
xlabel('频率');
ylabel('相位');
% 绘制时移变换后的信号的时域图像
subplot(2,1,2);
plot(t3, x3);
title('时移变换后的信号');
xlabel('时间');
ylabel('幅度');
```
运行上述代码可以得到cos(pi*t/2)的傅里叶变换,尺度变换和时移变换的结果。