matlab - 我的 ifft 的输出仍然有比较大的复数
问题描述
我正在使用 Matlab 进行地面响应分析。我需要做一个地面运动加速度的 FFT,乘以一些常数(放大函数),然后得到它的逆 FFT。但是,它没有返回正确的答案。事实上,IFFT 仍然具有复数(虚数)值。
Y = fft(acc,NFFT);
Y_phase = angle(Y);
h1=2*abs(Y(1:NFFT));
F=1/dt;
f2=(F/NFFT)*(1:NFFT);
%AMPLIFICATION FUNCTION
w1=2*(pi)*f2;
vs=450; % shear wave velocity [m/s]
zeta=0.05; % damping ratio of soil [-]
H=165; % height of soil layer [m]
TF1 = (1./sqrt((cos(w1*H/vs)).^2+(zeta*w1*H/vs).^2));
acc_fd1=TF1.*h1;
acc_td = ifft(0.5*acc_fd1.*exp(i*Y_phase));
time_ifft=[0:NFFT-1]*dt;
plot(time_ifft, acc_td, 'b');
每当我在 ifft 而不是 acc_fd1 中输入 h1 时,我都会得到原始信号,这意味着代码是可以的。谁能帮帮我?谢谢你。
解决方案
推荐阅读
- ios - IOS 键盘挡住了 SubView
- kotlin - 如何从另一个类(在 Kotlin 中)退出 runBlocking 协程?
- javascript - 为什么instanceof Array为数组返回false?
- c++ - (C++) 存储指向函数的指针,该函数的返回类型可在编译时推导出
- actionscript-3 - 建议字段无法正常工作 - AS3 AIR 代码
- node.js - 如何使用 Codeceptjs 和 Puppeteer 根据 col3 中的文本在 col1 中选中复选框
- java - 是否可以使用 Java 开发工具包在对 AWS Lambda 的调用请求中包含标头和查询参数
- bootstrap-4 - reactstrap 或 bootstrap 中的 className="mt-5" 是什么?
- python - 使用 Pandas,如何将时间戳索引列添加到现有的 .csv 文件?
- python - OpenStack Swift swiftclient - 如何写入和读取 {pickle 文件