(2)编程产生f1 (t)=sin(πt) (0≤t≤4),f2(t)=f1(2t),f3(t)= f1(1/2t), f4(t)= f1(-2t-1) (a) 给出程序清单,其中f2(t)~f4(t)可利用子函数fttrans.m实现。
时间: 2024-05-13 07:16:06 浏览: 158
以下是一个可能的MATLAB程序清单:
```matlab
% 定义函数 f1(t)
f1 = @(t) sin(pi*t);
% 定义函数 f2(t),利用 fttrans.m 实现
f2 = @(t) fttrans(@(x) f1(2*x), 0, t);
% 定义函数 f3(t),利用 fttrans.m 实现
f3 = @(t) fttrans(@(x) f1(1/(2*x)), 0, t);
% 定义函数 f4(t),利用 fttrans.m 实现
f4 = @(t) fttrans(@(x) f1(-2*x-1), 0, t);
% 绘制函数图像
t = linspace(0, 4, 1000);
subplot(2,2,1), plot(t, f1(t)), title('f1(t)');
subplot(2,2,2), plot(t, f2(t)), title('f2(t)');
subplot(2,2,3), plot(t, f3(t)), title('f3(t)');
subplot(2,2,4), plot(t, f4(t)), title('f4(t)');
```
其中,`fttrans.m` 是一个自定义的函数,用于进行傅里叶变换。具体实现可以参考以下代码:
```matlab
function y = fttrans(f, a, b, N)
%FTTRANS Fourier transform of f(t)
% y = FTTRANS(f, a, b, N) computes the Fourier transform of
% the function f(t) over the interval [a, b], using N points.
if nargin < 4
N = 1024;
end
t = linspace(a, b, N);
y = zeros(1, N);
for k = 1:N
y(k) = trapz(t, f(t).*exp(-1i*2*pi*(k-1)*t/(b-a)));
end
y = y/(b-a);
```
这个函数使用梯形法计算积分,依次将每个频率的复数振幅计算出来,并返回一个长度为N的向量 `y`。
阅读全文