标签: signal-processing

基本的DSP级别调整

我是DSP编程的新手,我想知道如何最好地执行水平调整的看似基本的操作.假设我有一个8位数字代表我希望信号以256步进入的幅度.我有一组代表信号数据的16位数字.基于"音量"参数缩放信号数据的最佳方法是什么,以便说0是完全衰减,255使数据保持不变?

signals signal-processing

0
推荐指数
1
解决办法
599
查看次数

0
推荐指数
1
解决办法
9485
查看次数

FFT数据看起来很奇怪

这是我的结果简短视频声音很可怕,但请耐心等待.

对我来说,这看起来有点奇怪.什么是前几个箱子大量飙升?什么是非线性的交易?

我正在绘制实部和虚部的平方和的平方根.我已经尝试过使用对数,但我得到了很多基线的移动,也就是说,光谱不会在屏幕中保持居中.

如果你能指出我正确的方向,我会很感激!

signal-processing fft

0
推荐指数
1
解决办法
1606
查看次数

傅立叶系列的快速方法?

我使用FFTW生成系数,现在我想重建原始数据,但只使用第一个numCoefs系数而不是全部系数.目前我正在使用下面的代码,这是非常慢的:

for ( unsigned int i = 0; i < length; ++i )
{
    double sum = 0;
    for ( unsigned int j = 0; j < numCoefs; ++j )
    {
        sum += ( coefs[j][0] * cos( j * omega * i ) ) + ( coefs[j][1] * sin( j * omega * i ) );
    }
    data[i] = sum;
}
Run Code Online (Sandbox Code Playgroud)

有更快的方法吗?

optimization signal-processing fft fftw

0
推荐指数
1
解决办法
249
查看次数

第一个差异过滤

我开始从事信号处理,我的教授要求我对我的时间表做一个第一个差异过滤器.我知道我应该使用filter()函数,但我不知道我应该使用什么分子(b)和分母(a)系数向量.首先是差异和一阶相同吗?

matlab signal-processing filter

0
推荐指数
1
解决办法
6902
查看次数

1D FFT的输入

我有一个浮点数组,我从传感器得到,并希望在通过FFT运行信号后得到幅度(在此之前,使用高通滤波器和Hann窗函数处理样本).

使用AForge.Math库FFT类,它将复数数组作为参数,我提出了以下代码:

Complex[] complex = new Complex[1024];
for (int i = 0; i < 1024 - 1; i++)
{
     complex[i] = new Complex(windowedSamples[i], 0);
}

FourierTransform.FFT(complex, FourierTransform.Direction.Forward);
return complex.Select(x =>  Math.Sqrt(Math.Sqrt(x.Re) + Math.Sqrt(x.Im))).ToArray();
Run Code Online (Sandbox Code Playgroud)

运行这个我得到了一些奇怪的结果,并且无法锁定问题.

前10个输入值:

0 0 -3.8454E-05 0.0001737584 0.0006910793 0.001071334 0.00204984 0.00276812 0.001741312 0.001796867

前10个输出值:

0.482303347948843 0.706458195192639 NaN NaN NaN NaN NaN NaN NaN NaN

我的第一个猜测是它可能是想象中的部分,但到目前为止,我读过的所有内容都说在这种情况下它应该设置为0.

我真的很感激帮助解决这个问题.

.net c# math signal-processing fft

0
推荐指数
1
解决办法
1112
查看次数

如何在Python中为采样信号编写低通滤波器?

很抱歉这可能是微不足道的问题,但我是信号处理的新手,我没有找到具有良好解释的python代码.所以我很乐意得到假的解释:)

我有一些信号,每1纳秒(1e-9秒)采样一次,比如1e4点.我需要从这个信号中滤除高频.假设我需要过滤高于10MHz的频率.我希望对于频率低于截止频率的信号,信号将保持不变.这意味着对于低于截止频率的频率,滤波器的增益将为1.我希望能够指定过滤顺序.我的意思是,钳位阶滤波器在截止频率后具有20 db/decade斜率(功率衰减),二阶滤波器在截止频率后具有40 db/dec斜率等.代码的高性能是重要的.

非常感谢你的帮助.亚历克斯.

python signal-processing filter lowpass-filter

0
推荐指数
1
解决办法
6503
查看次数

为语音信号添加噪声

我正在尝试.wav使用以下方法在matlab中为语音信号(文件)添加噪声:

load handel.mat;

hfile= 'noisy.wav';

y = wavread('daveno.wav');
y = y + randn(size(y)) * (1/100);
wavwrite(y, Fs, hfile);
nsamples=Fs;
Run Code Online (Sandbox Code Playgroud)

这增加了噪声,但是,它消除了实际的语音口语,因此仅包含噪声.我是否需要乘以更大的数字,或者,有人可以建议一种方法来解决这个问题吗?

file-io matlab signal-processing noise

0
推荐指数
1
解决办法
4700
查看次数

向KissFFT提供大量样品

我想找到持续时间为10秒的音频信号的4096点DFT,采样率为44100 Hz.因此,有441000个输入样本.但KissFFT最多只需4096作为输入大小.如何查找如此大信号的FFT?

audio signal-processing fft kissfft

0
推荐指数
1
解决办法
255
查看次数

使用 sinc 函数进行插值

对于大学作业,我必须插入我之前从 wave 中采样的一些点。只要我用interp1函数插入它们,它就可以工作。

我的老师希望我们使用该sinc函数对它进行插值,所以我用谷歌搜索它,mathworks 文档说我应该这样做:

rng default

t = 1:10;
x = randn(size(t))';
ts = linspace(-5,15,600);
[Ts,T] = ndgrid(ts,t);
y = sinc(Ts - T)*x;

plot(t,x,'o',ts,y)
xlabel Time, ylabel Signal
legend('Sampled','Interpolated','Location','SouthWest')
legend boxoff
Run Code Online (Sandbox Code Playgroud)

它有效,但由于我必须插入缩小域中的点,因此我修改了代码以尝试插入范围从0到 的点1

rng shuffle

t = 0:0.1:1;
x = randn(size(t))';
ts = linspace(-1,2,600);
[Ts,T] = ndgrid(ts,t);
y = sinc(Ts - T)*x;

plot(t,x,'o',ts,y)
xlabel Time, ylabel Signal
legend('Sampled','Interpolated','Location','SouthWest')
legend boxoff
Run Code Online (Sandbox Code Playgroud)

它只是不能正常工作,我从上面得到了这个:

数字

你能告诉我我做错了什么,还是sinc只适用于“大”域?

math matlab interpolation signal-processing coordinate-transformation

0
推荐指数
1
解决办法
2692
查看次数