- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在 Matlab 中,我经常使用 Welch 方法 (pwelch
) 计算功率谱,然后将其显示在双对数图上。 pwelch
估计的频率间隔相等,但对数间隔的点更适合对数对数图。特别是,当将绘图保存为 PDF 文件时,由于高频点过多,这会导致文件非常大。
什么是从线性间隔频率到对数间隔频率重新采样(重新组合)频谱的有效方案?或者,什么是在 PDF 文件中包含高分辨率频谱而不生成的方法文件过大?
显而易见的做法是简单地使用 interp1
:
rate = 16384; %# sample rate (samples/sec)
nfft = 16384; %# number of points in the fft
[Pxx, f] = pwelch(detrend(data), hanning(nfft), nfft/2, nfft, rate);
f2 = logspace(log10(f(2)), log10(f(end)), 300);
Pxx2 = interp1(f, Pxx, f2);
loglog(f2, sqrt(Pxx2));
但是,这是不可取的,因为它不保存频谱中的功率。例如,如果两个新频率区间之间有一条大谱线,它将简单地从生成的对数采样谱中排除。
为了解决这个问题,我们可以代之以内插功率谱的积分:
df = f(2) - f(1);
intPxx = cumsum(Pxx) * df; % integrate
intPxx2 = interp1(f, intPxx, f2); % interpolate
Pxx2 = diff([0 intPxx2]) ./ diff([0 F]); % difference
这很可爱并且大部分都有效,但是 bin 中心不是很正确,并且它不能智能地处理低频区域,在低频区域频率网格可能会变得更精细采样。
其他想法:
accumarray
进行重新合并。 pwelch
函数接受频率向量参数 f
,在这种情况下,它使用 Goetzel 算法计算所需频率的 PSD。也许首先使用对数间隔频率向量调用 pwelch
就足够了。 (这效率更高还是更低?)最佳答案
我会让它为我完成工作,并从一开始就给它频率。该文档指出您指定的频率将四舍五入到最近的 DFT 箱。这应该不是问题,因为您正在使用结果进行绘图。如果您担心运行时间,我会尝试并计时。
如果您想自己重新装箱,我认为您最好只编写自己的函数来对每个新箱进行集成。如果你想让你的生活更轻松,你可以做他们所做的,并确保你的日志容器与你的线性容器共享边界。
关于math - 如何重新采样/重新组合光谱?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6670232/
使用 Redshift 光谱时,您似乎只能导入提供位置直到文件夹的数据,并且导入文件夹内的所有文件。 有没有办法从包含多个文件的文件夹中导入仅导入一个文件。当提供带有 filename 的完整路径时,
我正在评估 Athena 和 Redshift Spectrum。两者都有相同的目的,Spectrum 需要一个 Redshift 集群,而 Athena 是纯粹的无服务器集群。 Athena 使用
我们目前生成每日 CSV 导出,并将其上传到 S3 存储桶,结构如下: |--reportDate- |-- part0.csv.gz |-- part1.csv.gz 我们希望能够
我在 S3 中有一个 JSON 结构数组,它已被 Glue 成功抓取和编目。 [{"key":"value"}, {"key":"value"}] 我正在使用自定义分类器: $[*] 然而,当尝试从
我是一名优秀的程序员,十分优秀!