用matlab程序写出cos(pi*t/2)的傅里叶变换,尺度变化,时移变换
时间: 2024-02-13 16:03:28 浏览: 102
首先,cos(pi*t/2)的傅里叶变换可以使用MATLAB中的fft函数来计算。代码如下:
```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('相位');
```
上述代码中,我们使用linspace函数生成了一个长度为2000的时间向量t,然后计算了cos(pi*t/2)在该时间向量上的取值。接着,我们使用fftshift和fft函数计算了该函数的傅里叶变换,并通过生成一个频率向量f来绘制了傅里叶变换的幅度谱和相位谱。
接下来,我们可以对cos(pi*t/2)进行尺度变换。例如,我们可以将函数宽度缩小为原来的一半,代码如下:
```matlab
% 尺度变换
x2 = cos(pi*t);
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('相位');
```
上述代码中,我们定义了一个新的函数x2 = cos(pi*t),它是cos(pi*t/2)函数宽度缩小为原来的一半。然后,我们使用fftshift和fft函数计算了这个新函数的傅里叶变换,并绘制了傅里叶变换的幅度谱和相位谱。
最后,我们可以对cos(pi*t/2)进行时移变换。例如,我们可以将函数向右移动2个单位,代码如下:
```matlab
% 时移变换
x3 = cos(pi*(t+2)/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,2,[3,4]);
plot(t, x3);
title('时移变换后的函数');
xlabel('时间');
ylabel('幅度');
```
上述代码中,我们定义了一个新的函数x3 = cos(pi*(t+2)/2),它是cos(pi*t/2)函数向右移动了2个单位。然后,我们使用fftshift和fft函数计算了这个新函数的傅里叶变换,并绘制了傅里叶变换的幅度谱和相位谱。最后,我们还绘制了时移变换后的函数图形。
完整代码如下:
```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('相位');
% 尺度变换
x2 = cos(pi*t);
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('相位');
% 时移变换
x3 = cos(pi*(t+2)/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,2,[3,4]);
plot(t, x3);
title('时移变换后的函数');
xlabel('时间');
ylabel('幅度');
```
运行上述代码可以得到cos(pi*t/2)的傅里叶变换,尺度变换和时移变换的结果。
阅读全文