问题标签 [time-frequency]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
matlab - 为什么从这个 Matlab 命令中冲浪?
代码
我进入了 OSX 10.10.3 Yosemite 的 R2014b
但旋转显示单元格不应该是黑色的
为什么输出是黑色的?我想知道这是否是硬件问题。
python - Python中的时间频谱图
我有一些以 256Hz 采样的 64 通道脑电图数据,我正在尝试对每个通道进行时频分析并绘制频谱图。
数据存储在 NumPy 3d 数组中,其中一个维度的长度为 256,每个元素包含所有采样时间点的微伏读数(每个数据通道的总长度为 1 秒)。
需要明确的是:我的 3D 阵列是 64 256 913(电极 * 电压 * 试验)。试验只是一次试验的一次试验。所以我想做的是从一次试验中取出一个电极,以及整个一维电压矢量,然后创建一个时频频谱图。例如,我想从 data[0,:,0] 创建一个频谱图。
对于每个电极,我想要一个图,其中 y 轴是频率,x 轴是时间,颜色/强度是功率
我试过在 python 中使用它:
这给了我一些看起来像这样的东西:
马上,这对我来说看起来不正确,因为轴范围不正确
此外,当我对所有 EEG 通道运行相同的代码时,我的所有数据都会得到完全相同的图(即使我已经验证每个通道的数据都不同)
我对信号处理还很陌生,在我的数据布局方式或我的功能使用方式上是否有什么地方出错了?
signals - 如何增加 FFT 窄带中的点数以进行 1/3 倍频程分析
我正在计算压力时间信号的声压级。每秒的样本数为 9831。(dt = 0.0001017 秒)对于一个简单的示例案例,总共收集了 749 个样本。
我在这个例子中使用了 512 个 FFT 点,所以频率从 19.2 Hz 到 4877 Hz,dF = 19.2 Hz。
我想计算 1/3 倍频程的 SPL(声压级)。
所以我采用 10 频带倍频程频率范围 1Hz、1.25Hz、1.6Hz、2Hz、2.5Hz、3.15Hz、4Hz、5Hz、6.3Hz、8Hz,这是 10 的倍数(即接下来是 10Hz、12.5赫兹,16赫兹.....直到5000赫兹)
请注意,这是 1/3 倍频程频带的中心频率。
每个频段都有较低和较高的频率(“fl”和“fu”),如下所示。“频率”是根据采样率计算的,因此它以 19.2 递增。“i”代表fft点号,注意点1为0Hz。“j”表示 fft 波段数,随着频率的增加,波段内的点数会增加。
因此,这导致我在较低倍频程频带内的 rms 计算给出了不好的结果,因为它在频带内没有足够的点(通常为 1 或 2),随着频率的增加,平均更好(例如在频带“j”= 25 四个点用于 rms 计算)。
有没有什么办法可以通过将频率范围分成两个(低频段和高频段)并应用不同的 fft 采样大小以包括尽可能多的低频段频率(通常从 100Hz 到 600Hz)内的点来改进 rms 计算。
我还计划使用 Hann 窗函数来减少泄漏,我应该在 FFT 之前还是在 FFT 之后应用。
欢迎您提出建议。
matlab - 在通道中划分信号
我在时域中有一个信号(从 -100 到 1100 ps 的 6000 个样本)。我必须将其转换为频域并将其分成100个通道,并找到每个通道的中心频率。
我不擅长“MATLAB”,所以如何做到这一点,将不胜感激。
audio - fscanf (filepointer, "%d\n%lg\n", sig_length, sample_rate); 如何解释它?
我有一个从互联网之前存在的科学音频文件类型的音频格式转换(称为 TFD v1)一个未压缩的简单的简单原始样本值数组...在此页面上的 get_signal() 函数中,我不知道如何样本值已格式化,为什么我需要采样率从数组中读取 256 个点?
matlab - 小波:如何从频率确定尺度?
在下面的代码示例中,我希望打印输出的行至少大致匹配。但他们没有。
我正在尝试在 Matlab 中使用连续小波变换,并且我想在输入信号中以不同频率执行变换,但我正在努力寻找一种可靠的方法来估计相应的尺度。
在那个代码示例中,我scal2freq
用来估计这些尺度(知道它是对合的,即scal2frq(scal2frq(x,'morl',dt),'morl',dt) == x
所有的数值精度都达到了x, dt
),但是我希望返回的频率估计值cwtft
是相似的。如您所见,它们不是。
有谁知道如何cwtft
估计这些频率,以及我是否可以使用反向估计来预测所需的比例?
matlab - 创建人工信号
我尝试在 Signal Processing StackExchange 上发布此内容,但收效甚微,因为它的人口稀少。由于我使用的是 MATLAB,我希望这里的人也能提供帮助。
我正在尝试设计一个具有两个“组件”的样本信号。我希望信号看起来像左上图,右侧显示了两个组件。时间频谱显示在左下角。
诚然,我对信号的了解并没有达到标准,但即使经过几个小时尝试摆弄啁啾、正弦函数和正弦函数的组合,我也无法准确地重现我的想法。以下代码与我尝试实现的目标略有相似:
这给出了以下信号:
这很好,但仍然不能令人满意。所以今天我尝试了一种更彻底的方法来理解啁啾和 sinc/gauspuls 函数是如何运作的,我对此有点悬念,但对背景没有太多了解。
据我了解,高斯脉冲的频率恒定,幅度减小。啁啾具有连续频率,可以指定为 t0 和 t1 的频率,并在两者之间进行插值。现在我不明白的是为什么这在频谱图中似乎没有很好地显示出来。
假设我创建了以下形式的啁啾:
我认为频谱图会显示一个填充 0.5Hz 到 2Hz 之间频谱的脊,但频谱图给了我一个高达 500Hz 以上的 y 轴分辨率:
有人可以向我解释如何为这样的信号获得更清晰的频谱图吗?
此外,我如何在我发布在顶部的频谱图中可视化上部 Ridhe 的这种“逐渐减少”效果?