n*******l 发帖数: 2911 | 1 很有道理。多谢。
我刚刚用profile看了看,2/3的时间是fft和ifft。估计那些部分是没办法了,看看
其他部分能不能省点儿是点儿。
我的程序总共就一个400来行,一层循环,就是每个时间步长计算若干次FFT 和 IFFT,
让我看看能不能把IFFT省掉。 |
|
r****y 发帖数: 1437 | 2 【 以下文字转载自 Science 讨论区 】
【 原文由 rossby 所发表 】
个人体会,也许对上面的那个问题有用。用过几次fft,发现一不小心还真爱出
错,估计是我水平太不照了。
1。 for real function f(x), ifft(fft(f(x))) != f(x), only
real(ifft(fft(f(x)))) = f(x), 计算中的round off errors很容易
产生很小的虚数项,~1e-14 to 1e-12.
1。 for f(x), ifft(fft(f(x)))= f(x), 这个没问题。但是要是你想通过
fft做微分,就得小心。比如用matlab, suppose你的数据是128个点,
y = fft(f, 128)
所得到的y还是128个值,前65个对应wavenumber 0, 1, 64, 后面的对应
-63, -62, ..., -1. 你要是以为后面的对应65, 66, 127,做微分的就会出错, |
|
r****y 发帖数: 1437 | 3 个人体会,也许对上面的那个问题有用。用过几次fft,发现一不小心还真爱出
错,估计是我水平太不照了。
1。 for real function f(x), ifft(fft(f(x))) != f(x), only
real(ifft(fft(f(x)))) = f(x), 计算中的round off errors很容易
产生很小的虚数项,~1e-14 to 1e-12.
1。 for f(x), ifft(fft(f(x)))= f(x), 这个没问题。但是要是你想通过
fft做微分,就得小心。比如用matlab, suppose你的数据是128个点,
y = fft(f, 128)
所得到的y还是128个值,前65个对应wavenumber 0, 1, 64, 后面的对应
-63, -62, ..., -1. 你要是以为后面的对应65, 66, 127,做微分的就会出错,
因为 d(exp(-ikx))/dx= -ik exp(-ikx), 这个k你就错了 |
|
n*******l 发帖数: 2911 | 4 网上有人说Matlab的FFT就是调用的fftw, 我用Profile仔细分析了一下我的
Matlab程序,它的FFT的性能是跟fftw一样的。
对于n=1024, 二维(nxn)的实数数据,12001次FFT 耗时141.538秒。
对于一维FFT,它的运算量是 5N log_2(N). 所以我的程序里的FFFT应该对应
N=2^_20,它的FLOPS是
5 * 2^20 *20*12001/141.538 = 8459 M FLOPS.
同时我的系统对复数进行了12000次IFFT,耗时222.933秒,对应的FLOPS是
5383 M FLOPS。
这基本就是fftw在四核系统里的benchmark值。
这个FFT/IFFT是我的程序的主要部分,耗时占总时间的63%, 所以就算把程
序用C, C++ 或者Fortran重写,也基本没有什么改善了,除非放到更多核的
并行系统上去。要是想要利用GPU,倒腾数据是一个耗时严重的问题,要仔细
考虑一下。 |
|
u***l 发帖数: 2 | 5 In OFDM transmitter, the modulated symbols need to be pulse shaped before
transmitting. I built a filter in Matlab2013a using
d = fdesign.pulseshaping(16,'Raised Cosine', 'Ast,Beta', 60, 0.3);
H = design(d);
fvtool(H);
In previous Matlab version, a function can be used both for filter design
and apply to IFFTed symbol data:
rcosflt(subcarriers, 1, 20, 'fir',0.4,10)
However in 2013a version, I couldn't find information to apply this filter
to IFFTed symbol data. Does anybody know how to do it?
Th... 阅读全帖 |
|
t********0 发帖数: 30 | 6 假设测量得到一个频域信号S(f)(VNA),有幅值和相位, 有限带宽(5-10G)。想看时
域的信号,也希望可以做time gating,然后载变回频域。现有VNA没有这个功能,所以
打算用Matlab实现。
一些资料解释,这个就是 IFFT -> time gating -> FFT 这么个过程。
具体写code时有这么几个问题:
1)由于频域信号有限带宽,而且不含DC,IFFT 时是不是假设频率平移到带宽的中间频
率呢?这样得到的时域信号是不是只有envelop, 而不含载频信息?当然加个exp(jwt)
也可以。
2)时域信号里的t=0参考点在哪里?或者可以确定这个起始时间点吗?
3)time gating后的时域信号,是不是只有幅值有意义?这样再变回频域,是不是得加
上频移?
谢谢! |
|
f***r 发帖数: 44 | 7 用fftshift(fft(....))就得到你平时看的频谱了
变换回去用ifft(ifftshift(....))
ifft(ifftshift(fftshift(fft(anything))))==anything |
|
r****y 发帖数: 1437 | 8
我上文说到的那个迭代次数几乎独立于矩阵大小的是专指对Toeplitz矩阵,
加上circulant矩阵的preconditioner. Toeplitz矩阵指任何一个对角线上的所有元素
都相等的对称矩阵, circulant矩阵的就是轮换矩阵. 对于一个Toeplitz矩阵,
构造相应的circulant矩阵(比较流行的有两种方法), 然后进行迭代, 试验不同大小
的矩阵, 就可以看到上面的结果. 我对这个的了解来自上个学期做的term project,
觉得这个preconditioner很有意思. 你可以自己试一下, 找任意circulant矩阵C,
任意相应大小的矢量v, 假设C的第一列是c1, 那么
fc1 = fft(c1)
temp = fc1*v*fc1'
vc = ifft(temp)
可以证明 vc = Cv, 这里fft, ifft 对应快速Fourier和反Fourier变换.
至于CG和preconditioner的书, 我想CFD的并不是最好的, 还是看那些专门 |
|
|
c*****g 发帖数: 21627 | 10 【 以下文字转载自 IndustryParty 俱乐部 】
发信人: choming (请抵制“十万强插”计划!), 信区: IndustryParty
标 题: 揭秘4G核心专利
发信站: BBS 未名空间站 (Mon Jun 8 04:14:08 2015, 美东)
揭秘4G核心专利 (2015-03-03 19:30:02)
从2012年10月份决定写《通信之道》,到现在差不多两年半的时间,第一版终于成稿,
以此文作结。
3G霸主
1985年,在美国硅谷成立了一家叫Qualcomm(高通)的公司。 这家公司把军用的CDMA技
术用于民用通信,推出了IS-95标准,成为与欧洲的GSM竞争的第二代移动通信系统。
在第二代的商业竞争当中,GSM还是取得了的胜利。但是在高通公司的创始人当中有一
位世界级的科学家,叫做Andrew Viterbi,就是那位Viterbi译码算法的发明人,IEEE
Fellow,并获得了美国最高科技奖。在他的推动下,产业界相信了CDMA代表了无线通信
技术的发展方向,因此第三代移动通信的三个国际标准,WCDMA, CDMA2000和TD-SCDMA
都采... 阅读全帖 |
|
m*******e 发帖数: 1598 | 11 【 以下文字转载自 EE 讨论区 】
发信人: zhizunbao123 (你在红楼我在西游), 信区: EE
标 题: 怎样看待华为前工程师杨学志关于4G核心专利的看法? (转载)
发信站: BBS 未名空间站 (Wed Jun 10 09:23:41 2015, 美东)
发信人: baodiao (钓鱼岛), 信区: PDA
标 题: 怎样看待华为前工程师杨学志关于4G核心专利的看法?
发信站: BBS 未名空间站 (Tue Jun 9 14:03:22 2015, 美东)
从网上看到一篇华为前工程师杨学志关于4G核心专利的看法, 不知各位有何高见?
当事人揭秘4G核心专利:高通没那么多,中国没那么少!
http://www.c114.net/news/41/a886875.html
1985年,在美国硅谷成立了一家叫Qualcomm(高通)的公司。这家公司把军用的CDMA技术
用于民用通信,推出了IS-95标准,成为与欧洲的GSM竞争的第二代移动通信系统。
在第二代的商业竞争当中,GSM还是取得了的胜利。但是在高通公司的创始人当中有一
位世界级的科学家,叫做Andrew V... 阅读全帖 |
|
u*****a 发帖数: 6276 | 12 【 以下文字转载自 PDA 讨论区 】
发信人: baodiao (钓鱼岛), 信区: PDA
标 题: 怎样看待华为前工程师杨学志关于4G核心专利的看法?
发信站: BBS 未名空间站 (Tue Jun 9 14:03:22 2015, 美东)
从网上看到一篇华为前工程师杨学志关于4G核心专利的看法, 不知各位有何高见?
当事人揭秘4G核心专利:高通没那么多,中国没那么少!
http://www.c114.net/news/41/a886875.html
1985年,在美国硅谷成立了一家叫Qualcomm(高通)的公司。这家公司把军用的CDMA技术
用于民用通信,推出了IS-95标准,成为与欧洲的GSM竞争的第二代移动通信系统。
在第二代的商业竞争当中,GSM还是取得了的胜利。但是在高通公司的创始人当中有一
位世界级的科学家,叫做Andrew Viterbi,就是那位Viterbi译码算法的发明人,IEEE
Fellow,并获得了美国最高科技奖。在他的推动下,产业界相信了CDMA代表了无线通信
技术的发展方向,因此第三代移动通信的三个国际标准,WCDMA,CDMA2000和TD-... 阅读全帖 |
|
m***e 发帖数: 89 | 13 【 以下文字转载自 PDA 讨论区 】
发信人: baodiao (钓鱼岛), 信区: PDA
标 题: 怎样看待华为前工程师杨学志关于4G核心专利的看法?
发信站: BBS 未名空间站 (Tue Jun 9 14:03:22 2015, 美东)
从网上看到一篇华为前工程师杨学志关于4G核心专利的看法, 不知各位有何高见?
当事人揭秘4G核心专利:高通没那么多,中国没那么少!
http://www.c114.net/news/41/a886875.html
1985年,在美国硅谷成立了一家叫Qualcomm(高通)的公司。这家公司把军用的CDMA技术
用于民用通信,推出了IS-95标准,成为与欧洲的GSM竞争的第二代移动通信系统。
在第二代的商业竞争当中,GSM还是取得了的胜利。但是在高通公司的创始人当中有一
位世界级的科学家,叫做Andrew Viterbi,就是那位Viterbi译码算法的发明人,IEEE
Fellow,并获得了美国最高科技奖。在他的推动下,产业界相信了CDMA代表了无线通信
技术的发展方向,因此第三代移动通信的三个国际标准,WCDMA,CDMA2000和TD-... 阅读全帖 |
|
p*******o 发帖数: 6791 | 14
当年看 A 片, 都是截成单桢的 imread 到 matlab 里, 做完 ifft, 然后再拼到一起看
...不过没有虚数部分效果不咋样... 他们加
码的时候做完 fft 用 abs 取实数部分了 |
|
h*****i 发帖数: 9112 | 15 不就是fft后扣噪音,再ifft么?跟高频低频无关啊 |
|
k**f 发帖数: 372 | 16
Some values, such as 0.1, cannot be represented precisely in binary. So if
you add 0.1 10 times and expecting the sum to be exactly 1, then you will be
disappointed.
If in your application, you know that the imaginary part of the complex is
zero in theory, you can cast the values to real value and dump the minuscule
imaginary part.
One such example is that when you take fft of a real signal in MATLAB, and
then take ifft of the spectrum, you can hardly get a result that all the
imaginary part of |
|
P****S 发帖数: 2286 | 17 f(n)**g(n)=IFFT( FFT(f(n)) * FFT(g(n)) )
卷积 ~ O(N*N)
FFT ~ O(N*log(N)) |
|
r********e 发帖数: 27 | 18 filter,
BYW, 用MATLAB反卷积deconv能计算,但不知结果对不对,有时好像有误差,
如果先用fft计算频谱,在ifft算时域结果,好像和直接deconv的结果不同。。 |
|
b*********h 发帖数: 46 | 19 看了一下,先做0插值,然后滤波,关键这个滤波一定要理想化,所以fir fliter
貌似都不行吧,iir filter要implement的话,除了fft-》cutoff-》ifft还有别
的efficient的办法么? |
|
a****l 发帖数: 8211 | 20 我说的数就是311111111111/10000000000(位数不见的对)啊?反正这个不重要.你说"不能有一点误差",这个是很难的.数字算法算来算去总是有误差的,你先做fft再做ifft很难说最后的结果会是一点不差的.你再做interpolation,也是肯定有误差的.你先要知道什么样的误差是允许的,什么是不允许的,然后才能讨论用什么处理,否则你简单的说不能有一点误差,那只好什么都不算了,不算不错,一算必错,多算多错.
你是不是知道,x-3+3<>x?
另外,如果是一个单一的周期信号,(我估计还应该是一个正弦的?),那么应该可以用那个多阶导数都是光滑的直接做插值,结果应该差不多.
1111111111111111111111111111111111111111111111111111111111111111111111111111 |
|
h*******o 发帖数: 145 | 21 设两个序列x1,x2的长度分别为n1,n2,则它们的离散线性卷积可以先分别补零到n1+n2
-1,再做
FFT,频谱相乘,再IFFT,这样得到一个长度为n1+n2-1的卷积结果x3。
这个结果也可以表示为矩阵形式:x3=H*x1,H为(n1+n2-1)*n1的矩阵。
现在我想求离散线性卷积的adjoint operator,即H的转置矩阵,想问下有没有什么快
速的方法求H
的转置(就像求卷积时,采用FFT来做,比用H*x1要快)?
多谢! |
|
Z**n 发帖数: 95 | 22 5-10GHz 带宽信号可以是单载频(中心在7.5G)也可能是多载频。
1) iFFT 之后即是其时域波形。
2) 零点是相对的。可以对应于所加时间窗的起始点。
3) time gating 后 使得系统带宽之外的功率快速下降。 |
|
Z**n 发帖数: 95 | 23 对原谱的 iFFT变换 没影响。
你原题中只是想看时域 波形, 并没提及做频谱搬移, 降频之后 看其它(基带)波形。 |
|
z**********3 发帖数: 11979 | 24 【 以下文字转载自 PDA 讨论区 】
发信人: baodiao (钓鱼岛), 信区: PDA
标 题: 怎样看待华为前工程师杨学志关于4G核心专利的看法?
发信站: BBS 未名空间站 (Tue Jun 9 14:03:22 2015, 美东)
从网上看到一篇华为前工程师杨学志关于4G核心专利的看法, 不知各位有何高见?
当事人揭秘4G核心专利:高通没那么多,中国没那么少!
http://www.c114.net/news/41/a886875.html
1985年,在美国硅谷成立了一家叫Qualcomm(高通)的公司。这家公司把军用的CDMA技术
用于民用通信,推出了IS-95标准,成为与欧洲的GSM竞争的第二代移动通信系统。
在第二代的商业竞争当中,GSM还是取得了的胜利。但是在高通公司的创始人当中有一
位世界级的科学家,叫做Andrew Viterbi,就是那位Viterbi译码算法的发明人,IEEE
Fellow,并获得了美国最高科技奖。在他的推动下,产业界相信了CDMA代表了无线通信
技术的发展方向,因此第三代移动通信的三个国际标准,WCDMA,CDMA2000和TD-... 阅读全帖 |
|
发帖数: 1 | 25 【 以下文字转载自 PDA 讨论区 】
发信人: baodiao (钓鱼岛), 信区: PDA
标 题: 怎样看待华为前工程师杨学志关于4G核心专利的看法?
发信站: BBS 未名空间站 (Tue Jun 9 14:03:22 2015, 美东)
从网上看到一篇华为前工程师杨学志关于4G核心专利的看法, 不知各位有何高见?
当事人揭秘4G核心专利:高通没那么多,中国没那么少!
http://www.c114.net/news/41/a886875.html
1985年,在美国硅谷成立了一家叫Qualcomm(高通)的公司。这家公司把军用的CDMA技术
用于民用通信,推出了IS-95标准,成为与欧洲的GSM竞争的第二代移动通信系统。
在第二代的商业竞争当中,GSM还是取得了的胜利。但是在高通公司的创始人当中有一
位世界级的科学家,叫做Andrew Viterbi,就是那位Viterbi译码算法的发明人,IEEE
Fellow,并获得了美国最高科技奖。在他的推动下,产业界相信了CDMA代表了无线通信
技术的发展方向,因此第三代移动通信的三个国际标准,WCDMA,CDMA2000和TD-... 阅读全帖 |
|
h*******o 发帖数: 145 | 26 设两个序列x1,x2的长度分别为n1,n2,则它们的离散线性卷积可以先分别补零到n1+n2-
1,再做FFT,频谱相乘,再IFFT,这样得到一个长度为n1+n2-1的卷积结果x3。
这个结果也可以表示为矩阵形式:x3=H*x1,H为(n1+n2-1)*n1的矩阵。
现在我想求离散线性卷积的adjoint operator,即H的转置矩阵,想问下有没有什么快
速的方法求H的转置(就像求卷积时,采用FFT来做,比用H*x1要快)?
多谢! |
|
s****a 发帖数: 238 | 27 我想算一个大的矩阵,先作一些处理,然后FFT再 处理一下,然后IFFT.
如果处理的话用valarray很方便,但fftw库只支持complex*的类型,所以要么
必须在数组和valarray之间来回转换,要么只用数组,所有的操作全部用for loop,没
有任何的优化。请问有什么比较好的解决方法? |
|
r****y 发帖数: 1437 | 28
呵呵, 那得看你处理的问题了. SOR 对松弛因子的响应是个很
尖锐的曲线, 所以有时候松弛因子差一点点, 要迭代的次数要增加很多.
有时候选择的不好, 比LU分解还来得慢慢(在矩阵不是很大的情况下).
现在比较流行的趋势是preconditioner 加CG, 比SOR还是有些
优势的. 不过话讲回来, 选择那种方法还是要根据系数矩阵的特点. 但
是其优点比SOR要明显得多. 比如, 对Toeplitz矩阵的circulant preconditioner,
整个解的过程中只需要构造circulant矩阵的第一列(circulant 轮换矩阵), 然后
用FFT, IFFT完成矩阵相乘的操作, 然后用CG算法. 这种preconditioner的好处
在于, 迭代所需次数很少, 而且几乎独立于矩阵的大小. 如果做一个12x12的矩阵用
6次, 那么做1200x1200的矩阵还是6-9次迭代就可以搞定. 比SOR优越得多.
当然, 要是不是对速度那么苛求的话, SOR编程最省心. :-) |
|
m***e 发帖数: 4 | 29 function sig=FractRnd(beta, n, HuaTu)
%sig=FractRnd(beta, n)
%To generate 1/f^betta noise
%INPUT
% beta is the exponent, a number
% n is the number of synthetic data points
%OUTPUT
% sig is an n-points array
%
if nargin==2
HuaTu=0;
end
len_beta=length(beta);
phi_n=2*pi*rand(1,n);
f=[1:n].^(-beta/2).*exp(i*phi_n(1:n));
sig=real(ifft(f));
sig=(sig-mean(sig))./std(sig);
if HuaTu
%To verify the scaling behavior of power spectral density:
% P(f) ~ 1/f^beta
figure(HuaTu)
F=fft |
|
s*****n 发帖数: 134 | 30 没系统学习过时间序列。随便说说想法
1. 用窗口函数对原始序列做预处理,过滤掉高频成分: https://en.wikipedia.org/
wiki/Window_function
2. 干脆预设几个固定的频率,然后对结果(IFFT)根据RMSE做筛选? |
|