几个信号处理函数和一些信号相关的结构体

语音信号处理入门入籍和课程推荐 欢迎关注我的公众号,微信搜一搜【音频信号处理那些事儿】获取更多信息。 由于看网上关于语音信号处理的入门书籍和课程推荐的比较少,同时相关的领域人员也比较少,所以建了这个公众号,欢迎各位同仁指正交流,谢谢。 本文是从我的公众号【音频信号处理那些事儿】选取而来的,所以直接复制了当时发文的内容。原文链接为【音频信号处理专栏】【2】入门书籍和课程推荐 作为刚刚入门音频信号处理(语音信号处理包括但不限于语音合成、语音识别、语音情感分析、车辆声音信号处理、麦克风阵列信号处理等)的小懵懂们总是会问以下问题(以下问题均摘自 阅读详情

这些定义主要都在signal.h中:

1. sigaction(查询或设置信号处理方式)

相关函数 signal,sigprocmask,sigpending,sigsuspend

表头文件 #include<signal.h>

定义函数 int sigaction(int signum,const struct sigaction *act ,struct sigaction *oldact);

函数说明 sigaction()会依参数signum指定的信号编号来设置该信号的处理函数。参数signum可以指定SIGKILL和SIGSTOP以外的所有信号。
如参数结构sigaction定义如下

struct sigaction
{
void (*sa_handler) (int);
sigset_t sa_mask;
int sa_flags;
void (*sa_restorer) (void);
}
sa_handler此参数和signal()的参数handler相同,代表新的信号处理函数,其他意义请参考signal()。
sa_mask 用来设置在处理该信号时暂时将sa_mask 指定的信号搁置。
sa_restorer 此参数没有使用。
sa_flags 用来设置信号处理的其他相关操作,下列的数值可用。
OR 运算(|)组合
A_NOCLDSTOP : 如果参数signum为SIGCHLD,则当子进程暂停时并不会通知父进程
SA_ONESHOT/SA_RESETHAND:当调用新的信号处理函数前,将此信号处理方式改为系统预设的方式。
SA_RESTART:被信号中断的系统调用会自行重启
SA_NOMASK/SA_NODEFER:在处理此信号未结束前不理会此信号的再次到来。
如果参数oldact不是NULL指针,则原来的信号处理方式会由此结构sigaction 返回。

返回值 执行成功则返回0,如果有错误则返回-1。

错误代码 EINVAL 参数signum 不合法,或是企图拦截SIGKILL/SIGSTOPSIGKILL信号
EFAULT 参数act,oldact指针地址无法存取。
EINTR 此调用被中断

范例 #include<unistd.h>

#include<signal.h>
void show_handler(struct sigaction * act)
{
switch (act->sa_flags)
{
case SIG_DFL:printf("Default action\n");break;
case SIG_IGN:printf("Ignore the signal\n");break;
default: printf("0x%x\n",act->sa_handler);
}
}
main()
{
int i;
struct sigaction act,oldact;
act.sa_handler = show_handler;
act.sa_flags = SA_ONESHOT|SA_NOMASK;
sigaction(SIGUSR1,&act,&oldact);
for(i=5;i<15;i++)
{
printf("sa_handler of signal %2d =".i);
sigaction(i,NULL,&oldact);
}
}

执行 sa_handler of signal 5 = Default action

sa_handler of signal 6= Default action
sa_handler of signal 7 = Default action
sa_handler of signal 8 = Default action
sa_handler of signal 9 = Default action
sa_handler of signal 10 = 0x8048400
sa_handler of signal 11 = Default action
sa_handler of signal 12 = Default action
sa_handler of signal 13 = Default action
sa_handler of signal 14 = Default action


2. int sigaddset(sigset_t *set,int signum);

sigaddset()用来将参数signum 代表的信号加入至参数set 信号集里。

返回值:

执行成功则返回0,如果有错误则返回-1。

/* We don't use <linux/bitops.h> for these because there is no need to
   be atomic.  */
static inline void sigaddset(sigset_t *set, int _sig)
{
        unsigned long sig = _sig - 1;
        if (_NSIG_WORDS == 1)
                set->sig[0] |= 1UL << sig;
        else
                set->sig[sig / _NSIG_BPW] |= 1UL << (sig % _NSIG_BPW);
}

The sigaddset() function adds the individual signal specified by the signo to the signal set pointed to by set. Applications must call either sigemptyset() or sigfillset() at least once for each object of type sigset_t prior to any other use of that object. If such an object is not initialised in this way, but is nonetheless supplied as an argument to any of sigaction(), sigaddset(), sigdelset(),sigismember(), sigpending() or sigprocmask(), the results are undefined.

3.sigdelset(从信号集里删除一个信号)
相关函数 sigemptyset,sigfillset,sigaddset,sigismember

表头文件 #include<signal.h>

定义函数 int sigdelset(sigset_t * set,int signum);

函数说明 sigdelset()用来将参数signum代表的信号从参数set信号集里删除。

返回值 执行成功则返回0,如果有错误则返回-1。

错误代码 EFAULT 参数set指针地址无法存取
EINVAL 参数signum非合法的信号编号

4. sigemptyset(初始化信号集)
相关函数 sigaddset,sigfillset,sigdelset,sigismember

表头文件 #include<signal.h>

定义函数 int sigemptyset(sigset_t *set);

函数说明 sigemptyset()用来将参数set信号集初始化并清空。

返回值 执行成功则返回0,如果有错误则返回-1。

错误代码 EFAULT 参数set指针地址无法存取

sigfillset(将所有信号加入至信号集)
相关函数 sigempty,sigaddset,sigdelset,sigismember

表头文件 #include<signal.h>

定义函数 int sigfillset(sigset_t * set);

函数说明 sigfillset()用来将参数set信号集初始化,然后把所有的信号加入到此信号集里。

返回值 执行成功则返回0,如果有错误则返回-1。

附加说明 EFAULT 参数set指针地址无法存取

5. sigismember(测试某个信号是否已加入至信号集里)
相关函数 sigemptyset,sigfillset,sigaddset,sigdelset

表头文件 #include<signal.h>

定义函数 int sigismember(const sigset_t *set,int signum);

函数说明 sigismember()用来测试参数signum 代表的信号是否已加入至参数set信号集里。如果信号集里已有该信号则返回1,否则返回0。

返回值信号集已有该信号则返回1,没有则返回0。如果有错误则返回-1。

错误代码 EFAULT 参数set指针地址无法存取
EINVAL 参数signum 非合法的信号编号

6. sigpending(查询被搁置的信号)
相关函数 signal,sigaction,sigprocmask,sigsuspend

表头文件 #include<signal.h>

定义函数 int sigpending(sigset_t *set);

函数说明 sigpending()会将被搁置的信号集合由参数set指针返回。

返回值执 行成功则返回0,如果有错误则返回-1。

错误代码 EFAULT 参数set指针地址无法存取
EINTR 此调用被中断。

7.  sigprocmask(查询或设置信号遮罩)
相关函数 signal,sigaction,sigpending,sigsuspend

表头文件 #include<signal.h>

定义函数 int sigprocmask(int how,const sigset_t *set,sigset_t * oldset);

函数说明 sigprocmask()可以用来改变目前的信号遮罩,其操作依参数how来决定
SIG_BLOCK 新的信号遮罩由目前的信号遮罩和参数set 指定的信号遮罩作联集
SIG_UNBLOCK 将目前的信号遮罩删除掉参数set指定的信号遮罩
SIG_SETMASK 将目前的信号遮罩设成参数set指定的信号遮罩。
如果参数oldset不是NULL指针,那么目前的信号遮罩会由此指针返回。

返回值 执行成功则返回0,如果有错误则返回-1。

错误代码 EFAULT 参数set,oldset指针地址无法存取。
EINTR 此调用被中断


Matlab信号处理:自相关和互相关分析 在信号处理中,自相关和互相关是相关分析非常重要的概念,它们能分析一个信号或两个信号在时间维度的相似性,在振动测试分析、雷达测距和声发射探伤得到了广泛的应用。自相关分析的研究对象为一个信号,互相关分析的研究对象为两个信号。本文以互相关分析为例,流程如下图所示,构建了一个余弦信号,并人为设置滞后延迟20个采样点,构建了另一个余弦信号,通过计算了两个余弦信号的互相关函数,分析了两个信号的相似性,找到了两个信号之间的时间延迟,在工程实际中常用于进行故障源定位。 阅读详情

相关推荐

ECG信号处理相关的开源Python库

ECG信号处理相关的开源Python库 1. NeuroKit2 详细信息,可以查看具体文档,文档地址 安装方法: conda install neurokit2 # 或者 pip install neurokit2 该库提供了一些比较有用的ECG处理方向: 基于ECG信号的呼吸分析 呼吸率变异分析 心率变异分析 P,Q,S,T的定位 输出模拟信号:ECG,RSP,EMG和EDA 2. hrv 该库主要针对心率变异性分析,具体可查看文档,[文档地址](Welcome to hrv’s docume

qian_chun_qiang的博客 6453

信号处理——自相关和互相关分析

上述案例是采用互相关函数,分析两个信号间的相关程度。通过人为设置第二个信号相对于第一个信号的延迟,利用互相关函数,确定潜在的延迟数,对比人为设置参考,验证了互相关函数分析信号间相关程度的可行性,其原理常用于故障源定位。此外,为了更好地理解互相关函数的计算原理,手动计算复现了互相关函数,对比matlab的自带函数,验证了手动计算的可行性。

ynn4818172的博客 5556

【信号】信号处理 {信号处理的时机;内核态和用户态;信号捕捉的原理;信号处理函数:signal, sigaction;可重入函数;volatile关键字;SIGCHLD信号}

【信号】信号处理 {信号处理的时机;内核态和用户态;信号捕捉的原理;信号处理函数:signal, sigaction;可重入函数;volatile关键字;SIGCHLD信号}

52Herzt的博客 1012

【20220627】【信号处理】自相关函数的定义、计算方法及应用

相关函数是用于定性描述两个信号之间的相关程度,两个信号之间的线性相似性大小可用相关系数定量计算。计算公式为: 相关系数的定义及相关性质详见:【20220623】【信号处理】深入理解Pearson相关系数和Matlab corr()、corrcoef()仿真_Satisfying的博客-优快云博客 相关函数可分为自相关函数、互相关函数和协方差函数,本文重点介绍自相关函数。 自相关函数是描述某一个随机信号在不同时刻之间的相关程度,定义式为: 对于连续信号

诗小葵的博客 7万+

MATLAB实现信号处理中的互相关函数

在信号处理领域,互相关函数是分析两个信号之间相似性的重要数学工具。它衡量的是一个信号相对于另一个信号在不同时间延迟下的相似程度。具体而言,两个连续函数x(t)和y(t)的互相关定义为:这里的τ表示时间延迟,积分在所有时间上进行。在离散信号处理中,互相关则通过求和来实现:其中n是信号的采样点索引,k是时间延迟。理解互相关函数的定义是深入研究其应用和计算方法的基础。通过互相关,我们不仅能够检测信号中的特定模式,还能进行时间延迟估计、信号对齐和滤波等操作。

weixin_42513928的博客 1422

STM32F407编译下载全流程:从CubeMX到HEX烧录

嵌入式固件开发中,编译与下载是连接代码与硬件的关键闭环。其本质是将高级语言描述的逻辑,经交叉编译(ARM GCC)、链接(ELF生成)、格式转换(HEX/BIN)后,通过调试接口(SWD/UART)写入MCU Flash存储器的过程。该流程涉及工具链协同、二进制格式特性(如Intel HEX的地址映射与无元数据设计)、启动模式(System Memory Bootloader)、Flash选项字节(RDP/WRP)等底层机制,直接决定固件可运行性与安全性。典型应用场景包括STM32F407开发板调试、量产固

weixin_28840811的博客 260

【20220628】【信号处理】自相关函数在信号处理中的应用——提取被噪声干扰的周期信号的周期

自相关函数的定义和特性详见:(6条消息) 【20220627】【信号处理】自相关函数的定义、计算方法及应用_Satisfying的博客-优快云博客 利用自相关函数 “周期信号的自相关函数依旧是同频率的周期信号” 的特性。该性质推导过程如下: 假设有一个周期信号为: 根据定义,其自相关函数为: 由于 的周期为 ,因此有: 则有: 因此,周期函数的自相关函数也为周期函数,并且周期等于原周期函数周期。 运行结果:

诗小葵的博客 8119

在VS2019里把JSBSim飞行模型集成到你的C++项目里(附完整配置流程和常见错误解决)

本文详细介绍了如何在Visual Studio 2019中将JSBSim飞行模型集成到C++项目中,包括环境准备、源码编译、项目配置和常见错误解决方案。通过实战技巧和优化建议,帮助开发者高效实现高精度飞行仿真功能,提升开发效率。

weixin_42620202的博客 413

Linux进程信号【信号处理】

从信号产生到信号保存,中间经历了很多,当操作系统准备对信号进行处理时,还需要判断时机是否 “合适”,在绝大多数情况下,只有在 “合适” 的时机才能处理信号,即调用信号的执行动作。关于信号何时处理、该如何处理,本文中将会一一揭晓

北 海的博客 1万+

vue3接入大华摄像头

┃ ┃ ┣ 📜PlaybackModal.vue 回放列表模态框。┃ ┃ ┗ 📜VideoGrid.vue 视频播放区域。┃ ┃ ┣ 📜ControlPanel.vue 控制面板。┃ ┃ ┣ 📜DeviceList.vue 设备列表。┃ ┣ 📂module //大华摄像头文件。

💻 专注 Vue 前端与 Java 后端技术 🌱 目前正在深入 Spring Boot、微服务与性能优化 📝 定期分享实战踩坑经验与学习笔记 🤝 欢迎交流,共同进步 914

从MRF8P9040N数据手册到ADS仿真:手把手教你搞定LDMOS功放设计(附完整模型下载)

本文详细解析了MRF8P9040N LDMOS功率放大器的数据手册关键参数,并提供了在ADS中进行仿真的完整指南。从模型导入、直流工作点验证到负载牵引与阻抗匹配设计,逐步指导工程师完成高效功放设计。文章还包含调试技巧和常见问题解决方案,帮助优化射频功放性能。

weixin_27015733的博客 489

【20220629】【信号处理】(平稳随机信号)自相关函数性质的证明过程

目录1. 偶函数2. 处取得最大值3. 周期函数的自相关函数也是周期函数,且周期和原函数相同4. 对于非周期信号,当 趋于无穷大时,自相关函数趋于信号平均值的平方 做变量代换,令 ,则有: 因此,自相关函数为偶函数。 利用任何非负函数的期望恒为非幅值的性质,则有: 若 为平稳过程,则有: 则有: 即: 因此,自相关函数在 处取得最大值,且为平稳随机过程的 “平均交流功率” 。 证明:

诗小葵的博客 1万+

RK3588开发板实战:从零开始移植Ubuntu 24.04(讯为SDK版)

本文详细介绍了如何在RK3588开发板上从零开始移植Ubuntu 24.04系统(讯为SDK版),涵盖开发环境准备、SDK解析、根文件系统定制、驱动适配、系统集成与烧录等全流程。通过实战案例,帮助开发者快速掌握RK3588开发板的系统移植技巧,适用于嵌入式开发与定制化Linux系统构建。

sand8的博客 436

现代信号处理——相关函数、协方差函数、功率谱密度(1)

一、涉及的概念 随机:随机是指信号的取值服从某种概率规律,这一规律可以是完全已知的、部分已知的或完全未知的。随机信号也称为随机过程、随机函数或随机序列。 确定性信号:如果序列{s(t)}在每个时刻的取值不是随机的,而是服从某种固定函数的关系,则称之为确定性信号。如阶跃信号、符号信号或矩形脉冲等。 随机信号:若序列{s(t)}在每个时刻的取值是随机变量,则称之为随机信号。随机信号过过程可以用...

weixin_41999529的博客 2万+

[GXYCTF2019]BabyUpload1 -- .htaccess文件解析与蚁剑实战指南

本文深入解析了[GXYCTF2019]BabyUpload1文件上传漏洞的实战利用。通过绕过后缀名与内容检测,上传包含PHP代码的.jpg文件,并利用.htaccess文件强制服务器将其解析为PHP脚本。文章详细介绍了.htaccess的原理、构造方法、Content-Type绕过技巧,并演示了如何使用中国蚁剑连接Webshell获取Flag,为Web安全学习提供了完整实战指南。

weixin_29016315的博客 509

OpenClaw赚钱实录:从“养龙虾“到可持续变现的实践指南——OpenClaw的赚钱底层逻辑与“记忆”革命

AI 的商业价值不在于替代思考,而在于沉淀关系。当 Agent 记住你的偏好、你的历史、你的目标,它就不再是冷冰冰的软件,而是成为数字化的关系资产。这种资产的稀缺性不在于技术复杂度,而在于时间无法被压缩——你无法用更好的算法替代 3 个月的协作记忆。在这场“记忆革命”中,护城河不是模型参数,而是用户与 AI 共同书写的历史。OpenClaw 用一套优雅的文件系统架构,将这种历史转化为可积累、可复用、可变现的数字资产。从“计算即服务”(CaaS)到“记忆即服务”(MaaS)。

冯·诺依曼 1341

信号的相关分析(自相关和互相关) | python代码实战

信号的相关分析(自相关和互相关)| python代码实战

m0_47410750的博客 1万+

基于DFT的滤波系列:加窗滤波的 Matlab 实现

在实际应用中,你可以尝试不同类型的窗函数(如汉宁窗、汉明窗等)以及不同的滤波参数来获得所需的滤波效果。此外,还可以进一步了解 DFT 和窗函数的原理,以及其他数字信号处理技术的应用。加窗滤波是一种常用的数字信号处理技术,它通过在频域上应用窗函数来改善信号的频谱特性。我们通过定义输入信号、应用窗函数、进行 DFT 和逆 DFT,实现了滤波过程,并通过绘图进行了可视化。在频域上进行加窗滤波的关键是将窗函数应用于 DFT 的结果。首先,我们需要定义一个输入信号,这里我们使用一个简单的正弦波作为示例。

m0_47037246的博客 462

信号处理:互相关函数

对于两个离散信号xnx[n]xn和yny[n]yn,它们的互相关函数RxymR_{xy}[m]Rxy​m定义如下:mmm为整数,表示延迟(lag)量。可以是正数(x 滞后于 y)、负数(x 超前于 y)或零(两者对齐)。RxymR_{xy}[m]Rxy​m表示在延迟mmm时,信号xxx和yyy的相似程度。其幅值受信号幅值影响,因此一般用其归一化形式。

天城电子嵌入式的博客 2612

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

信号处理 窗函数

1. FFT、时域、频域 时域分析 以时间轴为坐标表示动态信号的关系。 如音乐,股票走势图。 频域分析 以频率为坐标轴的信号表示。 通过FFT将信号从时域转换为频域,进行分析。 图1 时域中的一个信号都分解为一组正弦波。 如何分解?当然是 FFT! FFT 快速傅里叶变换 (fast Fourier transform) 简明版(含推导):https://blog.youkuaiyun.com/enjo...

xiaobuhui的博客 2545

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

QML中的信号槽(信号与信号处理程序)

前言 信号和槽(signals &amp; slots)是Qt框架的核心机制,Qt C++中的槽函数对应QML中的信号处理程序(signal handler)。 信号是事件(event),信号通过信号处理程序响应。发出信号时,将调用相应的信号处理程序。在处理程序中放置诸如脚本或其他操作之类的逻辑允许组件响应事件。 第一个例子:信号处理程序 //以下所有示例都在Qt5.9.7下测试 imp...

龚建波 1万+

时域离散随机信号处理 相关函数

相关函数贯穿整个随机信号处理,下面就着重讨论相关函数。 自相关函数的定义: 集合平均下自相关函数计算公式: 时间平均下自相关函数的计算公式: 对于***平稳随机信号***相关函数的性质: Rxx(m)=E[Xn∗Xn+m]=E[XnXn−m∗]R_{xx}(m) = E[X_n^*X_{n + m}] = E[{X_n}X_{n - m}^*]Rxx​(m)=E[Xn∗​Xn+m​]=E[Xn​Xn−m∗​] Rxx(m)=Rxx(−m)R_{xx}(m) = R_{xx}( - m)Rxx​(m)=Rxx

西檬饭 4636

Linux信号处理机制(三)——信号捕捉

本文主要针对信号捕捉展开话题,文中可能会提到前两篇博客中的知识点,对此迷惑的可以查看前两篇博客:信号引入、阻塞信号内核是如何捕捉信号的?如果信号的处理动作是用户自定义的函数,在信号递达时就调用这个函数,这称为信号捕捉。由于信号处理函数的代码是在用户空间执行的,处理过程较为复杂,我们画图来进行解释:上图很好的说明了信号捕捉时用户态和内核态的切换(用户处理信号最好的时机是程序从内核态切换至用户态的时候...

ypt 4422

信号发送函数:sigqueue,自定义信号处理函数:sigaction,信号中的几点特殊机制(信号嵌套,信号屏蔽等),信号安全问题

信号发送函数:sigqueue,自定义信号处理函数:sigaction,信号中的几点特殊机制(信号嵌套,信号屏蔽等),信号安全问题

cyz322649的博客 1506

【Linux】:信号的保存和信号处理

信号的保存与处理的详细介绍以及代码演示!

Yikefore的博客 1830

【linux系统编程】信号——信号保存+信号处理

这是一篇将近3w字的超长文章,是信号三部曲的第二部曲及第三部曲的集合,并且还包含以前没学过信号不能讲的知识这里都进行了补充。首先讲了信号保存,信号是如何保存的。然后讲了信号处理,以前说过信号是在合适的时候被处理,什么合适的时候?进程从内核态返回用户态的时候,那什么是用户态,内核态,进程什么时候去OS中执行代码的,进而将虚拟地址空间在做进一步的阐述。以及有关信号的一些接口和接口的使用,并且还阐述如果同一时间发送同类型的信号OS会做什么处理等等知识,以及可重入函数volatile关键字SIGCHLD信号相关知识

fight_p的博客 2104
上一篇: Ubuntu 10.04-Gedit or Vim 中文乱码问题
下一篇: ntohs()_ntohl()_htons()_htonl() 这几个函数的作用
lamdoc
博客等级 码龄18年 155粉丝 655原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值