如何用matlab实现fft

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用matlab实现fft相关的知识,希望对你有一定的参考价值。

参考技术A matlab中fft有1d和2d的,fft得到的是信号的频谱即t-》f

clear
%编写骆遥
fs=1000
t=0:1/fs:0.6;
f1=100;
f2=300;
x=sin(2*pi*f1*t)+sin(2*pi*f2*t);
subplot(711)
plot(x);
title('f1(100hz)\f2(300hz)的正弦信号,初相0')
xlabel('序列(n)')
grid
on
number=512
y=fft(x,number);
n=0:length(y)-1;
f=fs*n/length(y);
subplot(713)
plot(f,abs(y));
title('f1\f2的正弦信号的fft(512点)')
xlabel('频率hz')
grid
on
x=x+randn(1,length(x));
subplot(715)
plot(x);
title('原f1\f2的正弦信号(含随机噪声)')
xlabel('序列(n)')
grid
on
y=fft(x,number);
n=0:length(y)-1;
f=fs*n/length(y);
subplot(717)
plot(f,abs(y));
title('原f1\f2的正弦信号(含随机噪声)的fft(512点)')
xlabel('频率hz')
grid
on

如何用 CUDA 计算大矩阵的二维 FFT?

【中文标题】如何用 CUDA 计算大矩阵的二维 FFT?【英文标题】:How to calculate a two-dimensional FFT of a large matrix with CUDA? 【发布时间】:2021-04-12 20:05:45 【问题描述】:

现在我有一个16K*16K的大矩阵,全局内存不够用,怎么计算矩阵的二维FFT?

【问题讨论】:

很可能你不能。有核外fft算法。我不知道有任何 GPU 实现。当然没有袖口 您应该能够在 3GB GPU(使用 CUFFT)上执行该大小的 float R2C 或 C2R 就地转换。 Here 是框架。我可以在 2GB GPU 上进行 15Kx15K 的转换。 【参考方案1】:

也许使用统一内存的超额订阅适用于 cuFFT?

https://developer.nvidia.com/blog/unified-memory-cuda-beginners/

您还可以分别对行和列进行 FFT,并在主机内存之间移动数据。

您需要完整的结果矩阵吗?你在 CPU 和 GPU 上有多少内存?输入/输出是复数值吗?您需要什么精度(16 位是否足够)?计算时间紧迫吗?您还想处理更大的矩阵吗?

【讨论】:

以上是关于如何用matlab实现fft的主要内容,如果未能解决你的问题,请参考以下文章

matlab中imagesc如何用C语言去实现

如何用matlab实现fft

如何用matlab实现两个函数的卷积运算

如何用matlab来实现绘制工业摄像机站位的

如何用matlab实现对边缘检测后的图像的边缘细化和曲线拟合?

如何用matlab实现数字手势的识别