信号处理

为信号,图像和视频处理领域的艺术和科学从业者提供的问答

1
创建频谱图
我一直在尝试确定此任务的逻辑,并计划使用KissFFT源程序包执行快速傅立叶变换。请让我知道这是否正确: 分配FFT结构,即。我正在使用的窗口大小kiss_fft_alloc(N,0,NULL,NULL) 在哪里N。输入缓冲区将是N类型为的元素数组kiss_fft_scalar。输出缓冲区将是N/2 + 1类型为的元素数组kiss_fft_cpx。 解码N(窗口大小)PCM样本数。 对于每个PCM样本,平均每个通道的振幅(无符号样本),并从0缩放到2(除以65536.0),然后将结果存储到输入缓冲区中。 在输入缓冲区上执行窗口化(即Hanning)。 对输入缓冲区执行快速傅立叶变换,并将其存储到输出缓冲区中。由于我使用实数值作为输入,因此可以使用kiss_fftr()。 对于N/2输出值,获取转换后数据的平方大小,然后使用以下公式将这些值转换为dB刻度: 10 * log10 (re * re + im * im) 绘制N/2步骤6中的值。 丢弃输入缓冲区的前半部分,解码下一个(窗口大小/ 2)PCM样本,并对数据执行缩放和加窗操作。这样可以有效地滑动输入窗口,并避免必须在已处理的PCM样本上重做数学运算。 循环至步骤5,重复这些步骤,直到处理完所有样本为止。 从中释放已使用的内存kiss_fft_alloc()。 建议在执行FFT之前先从输入窗口中减去一个值,以使所得的DC值的大小为零。我应该从输入数据中减去平均值还是平均值? 另外,选择窗口大小时需要考虑哪些事项?除此之外,按照KissFFT的说明,它必须是偶数,使用较小的窗口大小也有好处。它会提供更好的图形吗?我认为大窗口大小会减少必须执行的FFT数量,这是使用大窗口大小的唯一好处吗? XXx 预先感谢您提供的所有指导。

2
了解Bainter电路(chebychev滤波器)
作为信号处理课程的一部分,我正在构建一个三阶Chebychev带阻滤波器。我们通过使用三个级联的Bainter电路来实现这一点。尽管不是班级的一部分,但我对Bainter电路的增益有疑问。 我正在尝试编写一个脚本,该脚本将使用转折频率和最大总增益作为设计规则来自动选择组件,但是在计算总增益时会遇到一些问题。 为了计算Bainter阶段的总增益,我是否只需算出三个运算放大器部分的单个增益?那么,总收益将是三个个体收益的乘积?

1
罗伯茨边缘探测器如何使用?
我正在尝试使用Roberts边缘检测来处理图像。我是否仅将两个蒙版都应用于图像并像往常一样执行卷积?有人可以给我介绍如何使用这种边缘检测方法,因为我正在尝试对其进行编程以处理灰度图像。我分别使用两个内核对图像进行了卷积处理,但是图像凹痕看起来不错。 谢谢。


1
Matlab的STFT实现spectrogram()的最大频率分辨率是多少?
Matlab的spectrogram()功能计算信号的STFT。它描述其NFFT参数如下: S = SPECTROGRAM(X,WINDOW,NOVERLAP,NFFT)指定用于计算离散傅立叶变换的频率点数。如果NFFT未指定,NFFT则使用默认值。 我是否正确,这NFFT仅是在频率分辨率和计算数量之间进行权衡?对于我的离线工作,无需节省周期。是否有的最大限制NFFT,例如由频谱泄漏或我应了解的任何其他问题强加的,或者我可以将该参数设置得尽可能高吗?

1
如何为水下声纳实现自适应阈值算法
我想在MATLAB中实现自适应阈值算法,以过滤水下声纳接收器接收到的数据。接收到的数据具有交互式噪声分量,该噪声分量是由水下噪声和镜面反射引起的。CFARD方法很接近,但是没有达到我的目的。我必须对数据成像,以便能够在屏幕上看到位于声纳扫描深度内水下的物体。任何帮助将不胜感激。 编辑: 这是一个水下环境。我试图对从声纳换能器接收到的信号在被与换能器位于同一环境中的固体目标反射后的阈值进行阈值处理。问题属于水下声成像声纳领域。问题是,我无法对水下环境噪声进行建模。从我读到目前为止关于这个话题,噪声模型遵循 -配送ķķK。而且,环境噪声本质上不是加性的,而是交互性的。因此,阈值必须是自适应的。我在问题中也提到了CFARD方法。这对雷达应用中的信号处理很有用,因为我们只是想在大面积的高能量处找到一个点。关于水下声成像声纳,我们无法做到相同,因为我们试图将目标作为视频显示在屏幕上。我希望我现在已经弄清楚了。

1
为什么对自适应AR NLMS滤波器进行过建模可以解决尖峰?
我只是模拟了由白噪声激发的自回归二阶模型,并使用1-4阶的标准化最小均方滤波器估计了参数。 由于一阶滤波器对系统建模不足,因此估计当然很奇怪。尽管二阶滤波器有一些急剧的跳跃,但它找到了很好的估计。从NLMS过滤器的性质可以预期到这一点。 使我困惑的是三阶和四阶滤波器。如下图所示,它们似乎消除了急剧的跳跃。我看不到它们会添加什么,因为二阶滤波器足以对系统建模。冗余参数始终在附近徘徊。000 有人可以定性地为我解释这种现象吗?是什么原因造成的,它是可取的吗? 我用步长,的样品,并且AR模型其中是白色差异噪声1。μ=0.01μ=0.01\mu=0.0110410410^4x(t)=e(t)−0.9x(t−1)−0.2x(t−2)x(t)=e(t)−0.9x(t−1)−0.2x(t−2)x(t)=e(t)-0.9x(t-1)-0.2x(t-2)e(t)e(t)e(t) MATLAB代码,供参考: % ar_nlms.m function th=ar_nlms(y,order,mu) N=length(y); th=zeros(order,N); % estimated parameters for t=na+1:N phi = -y( t-1:-1:t-na, : ); residue = phi*( y(t)-phi'*th(:,t-1) ); th(:,t) = th(:,t-1) + (mu/(phi'*phi+eps)) * residue; end % main.m y = filter( [1], [1 0.9 0.2], randn(1,10000) )'; plot( ar_nlms( y, …

2
关于哈雷特的解释
会有人能够给我一些信息或链接等..关于haarlets又名Haar小波状特征。我正在阅读几篇针对我的硕士论文的文章,其中几篇文章简要提到了haarlets。我似乎无法真正了解它们的用途和用法。抱歉,这是一个基本问题。但我真的很感谢有关该主题的一些清晰,结构化的信息。

2
为什么这种手动双线性变换产生的结果与Matlab的结果不同?
我有一个截止频率为一阶Butterworth滤波器。则其传递函数为ωcωc\omega_c H(s)=ωcs+ωcH(s)=ωcs+ωcH(s) = \frac{\omega_c}{s+\omega_c} 使用双线性变换找到H(z)H(z)H(z)(那个函数叫什么?),我得到 H(z)=ωc2Tz−1z+1+ωc=ωcz+ωc(2T+ωc)z+ωc−2TH(z)=ωc2Tz−1z+1+ωc=ωcz+ωc(2T+ωc)z+ωc−2TH(z)=\frac{\omega_c}{\frac{2}{T}\frac{z-1}{z+1} + \omega_c} = \frac{\omega_c z + \omega_c}{\left(\frac{2}{T}+\omega_c\right)z + \omega_c-\frac{2}{T}} 但是,我无法将此结果与Matlab所做的调和。无论T的值是多少,这似乎都是错误的TTT。我假设B和A以下是H(z)的系数H(z)H(z)H(z)。 >> [B,A] = butter(1,0.5) B = 0.5000 0.5000 A = 1.0000 -0.0000 >> [B,A] = butter(1,0.6) B = 0.5792 0.5792 A = 1.0000 0.1584 >> [B,A] = butter(1,0.7) B = 0.6625 0.6625 A = …
10 filters  matlab 

2
在我的LP转向HP滤波器输出中,这种现象是做什么的?
我正在尝试通过LP滤波并从原始滤波器中减去输出来对信号进行HP滤波。为了获得经过LP滤波的信号,我使用三阶Butterworth滤波器对16,000个采样信号进行了前向滤波。截止频率为0.5 Hz @ 250 Hz。没有使用窗口。 在大约前85%的样本中,此方法的输出似乎与实际经过HP滤波的信号完全重叠。但是,在输出结束时,会出现类似Sinc的异常现象。 是什么原因造成的? 为了使该方法可行,我可以进行哪些更改? 这是两个重叠的信号。蓝色的一个被HP过滤,红色的一个通过减法获得。 这是每个样本的绝对差。他们永远不会完全平等;最小差异为8e-12。87%的值低于0.01。 (如果有更好的方法可以从LP过滤器的获得HP过滤器,我将很高兴学习它。)H(z)H(ž)H(z)

1
有关CMA均衡器的一般问题
因此,我最近在MATLAB中实现了CMA均衡器,该均衡器使用最速下降方法收敛到最小成本。(我在均衡器实现狂潮中)。 我的问题如下: 1)在我看来,CMA算法仅适用于相对“平坦”的通道。换句话说,它不适合用于淡入淡出/空的通道吗?这通常是真的吗? 2)我使用的是BPSK信号,从这里的第一个图可以看出,在多径效应之后,我在BPSK信号的复平面上出现了拖影-正如预期的那样,没有两个漂亮的簇。相反,我们看到4个红色簇。我的问题是,在CMA均衡器之后,我还有 4个集群怎么办?(我把那些颜色涂成蓝色)。我认为这是有一定道理的,因为CMA只是将信封设置为1,而不是“关心”您正在谈论的集群。我听说CMA可能会遇到局部最小问题。这是一个例子吗?(即,由于这是BPSK,因此获得4个群集而不是2个群集)。如果没有,该怎么办? 3)几乎好像在回答问题2一样,我继续进行了更改,以求将误差最小化的常数模量。我选择了0.25作为模数,而不是选择1(如BPSK那样)。这是我得到的星座: 问题是,即使这是一个“解决方案”,人们如何先验地知道选择模数是什么呢?我认为这是一个问题,原因是如果我有4个群集而不是2个群集,则会使符号后相位/频率偏移估计/校正更加复杂,尤其是当由于BPSK信号而期望2个群集时。 (为完整起见,我附加了相同的图,但是当我添加频率偏移时) 在此先感谢您对均衡器的任何见解!

1
尺度空间理论的理解
在尺度空间理论的信号的尺度空间表示,(在图像的情况下,d = 2)被给出为: 大号(X ,y ; t )= g (x ,y ; t )* f (x ,y )其中g (x ,F(x ),x = (x1个,。。。,Xd)F(X),X=(X1个,。。。,Xd)f(x), x = (x_1, ..., x_d)d= 2d=2d = 2L (x ,y; t )= g(x ,y; t )* f(x ,y)大号(X,ÿ;Ť)=G(X,ÿ;Ť)∗F(X,ÿ)L(x, y; t) = g(x, y; t) * f(x, y)G(x …

2
音高检测中的谐波产品频谱限制
我已经使用HPS制作了音高检测算法,但遇到了问题。我是信号处理的初学者,这个站点以前曾帮助过我,所以我应该问一下。 对于更高的音调( eg. >C6:1046.50hz),我开始从HPS获取垃圾数据。音调越高,我得到的垃圾越多(“垃圾”是指既不是倍频程误差也不是谐波的频率,大约在1Hz-20Hz) 我的经验观察到: 如果基音高于A6左右,则结果对于更高的音调是最差的,我只会得到垃圾数据。 即使在非常高的音调下,FFT也能正常工作(按我的意思是,它的峰值显示的是基波或谐波之一,但没有垃圾) 如果我降低了考虑使用HPS的谐波数量,垃圾将减少,但是这使得区分基波和谐波变得更加困难。 这是我的算法: ->raw buffer -> hann window, 16384 samples, 50% overlap -> zero padding -> FFT -> HPS 任何帮助表示赞赏! 更新1:因此,我还要添加一些其他内容: 我记录的采样率为44100 Hz 我观察到这种行为在吉他上几乎看不到,但在数码钢琴上却很明显(对于相同的演奏音符) 这是我的hps算法,也许经验丰富的人可以发现问题。 int hps(float* spectrum, int spectrumSize, int harmonics) { int i, j, maxSearchIndex, maxBin; maxSearchIndex = spectrumSize/harmonics; maxBin = 1; …

1
在低频下用于水下声通信的最佳调制有什么想法?
我想对DSP蜂巢式控制器进行ping操作,以寻求有关将哪种最佳调制类型用于低频水下通信的一般想法。我选择这个项目是因为我可以从中学到很多东西。 一些背景: 低频,<500 Hz(明显适用于载波和调制数据) 例如200 Hz的BPS会很好。 肯定会有多路径。 由于多普勒效应,频率可能会以原始频率的约0.3%的最大因数被涂抹。 到目前为止,我发现: 我当时在考虑OFDM,但我了解到虽然信道估计要容易得多,但对多普勒效应更敏感。 我也在考虑线性调频调制,有人做过类似的事情吗? 你怎么看? 编辑:我附上了一些我认为是“最坏情况”的场景(多路径通道,bps = 200 Hz)。通道以时域中的位数表示,因此您可以更轻松地查看在下一个反射到达之前经过了多少位。 情况1: 情况2: 情况3: 情况4: 笔记: 如我们所见,我几乎总是拥有一条大小几乎相等但相反相位的第二条路径,准备将其粘贴到我的主路径上。 对于一个1000比特@ 200 bps(5秒)的数据包,我认为通道可能会发生显着变化……但是,与此同时,我们对数据包的长度和内容拥有完全的控制权。 我们可以假设由于多普勒引起的频率偏移相对“表现良好”,即没有突然的“混响”。还可以考虑由于载波失配而引起的频率偏移。

6
0.01 Hz的高通滤波器,适用于EEG缓慢漂移
我正在尝试为脑电图(EEG)数据集制作一个高通滤波器,以消除非常缓慢的漂移。但是,0.3 Hz左右的频率对于研究这些数据非常重要。 我使用Matlab,并尝试了各种方法。似乎使用FIR滤波器可以实现3 dB的极低dB衰减。例如,我使用了: h=fdesign.highpass('Fst,Fp,Ast,Ap',0.005,0.01,3,1,250); % i needed to cut d=design(h,'butter'); fvtool(d) 但是,此滤波器会在数据开始时产生直流漂移,因此我不希望丢失这些第一个数据点。 我已经阅读了您的页面,其中有一个聪明的主意是设计一个低通滤波器,稍后再从实际数据中减去它。我用等波纹滤光片进行了过滤,结果正常,但基线上升。我现在不想运行平均去除,因为这是分析协议的下一步。 有什么建议么?
10 filters 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.