智能手机识别情绪:基于手指划动模式的研究

0 下载量 31 浏览量 更新于2024-08-28 收藏 432KB PDF 举报
本研究论文探讨了智能手机是否能够探测到用户的情绪状态,以提升人机交互和用户体验。作者Daxiang Dai与Qun Liu来自中国重庆的计算智能国家重点实验室,而Hongying Meng则在英国布鲁内尔大学电子与计算机工程系工作。他们提出了一种新颖的方法,即通过分析用户的手机操作——手指触摸模式,来识别不同情绪类别下的情感状态。 实验的基础是利用国际情绪图片系统(International Affective Picture System, IAPS)设计情绪诱导实验,这是一种被广泛用于情绪研究的标准工具。IAPS包含一系列图片,能够诱发不同强度和类型的情绪反应。研究者通过让参与者在接触手机屏幕时做出选择或操作,收集他们在面对这些图片时的指纹触控数据。 然后,他们提取了在高兴、中性和悲伤等不同情绪状态下的手指触控特征,这些特征可能包括滑动速度、压力、频率等,这些细节反映了用户在不同情绪状态下对屏幕的不同处理方式。这些特征被认为是情绪表达的重要线索,因为它们能反映出用户在不同情境下的心理状态。 接着,研究团队运用机器学习算法对这些特征进行深入分析。他们可能采用了支持向量机(SVM)、神经网络或者深度学习模型,这些算法能有效地从大量数据中学习并建立情感分类模型。他们旨在训练一个模型,能够准确地将用户的情感状态分为积极、中性和消极这三大基本情绪类别。 实验结果显示,尽管智能手机上的手指触控模式可能难以直接量化情绪,但通过精心设计的数据采集和分析,确实能够在一定程度上捕捉到用户的情绪变化。这项工作的潜在应用包括个性化推荐、情绪健康监测或甚至为虚拟助手提供更人性化的交互体验。然而,由于情绪的复杂性和个体差异,未来的研究可能需要进一步改进方法,提高识别的精确度和普适性。这篇论文为智能手机作为情绪探测器的可能性打开了一扇新的窗口。

帮我优化一下这段代码配置2M波特率的CANFD :#include "can.h" #include "gd32c10x.h" #include "gd32c10x_eval.h" void can_gpio_config(void) { rcu_periph_clock_enable(RCU_CAN0); rcu_periph_clock_enable(RCU_CAN1); rcu_periph_clock_enable(RCU_GPIOB); rcu_periph_clock_enable(RCU_AF); gpio_init(GPIOB,GPIO_MODE_IPU,GPIO_OSPEED_50MHZ,GPIO_PIN_8); gpio_init(GPIOB,GPIO_MODE_AF_PP,GPIO_OSPEED_50MHZ,GPIO_PIN_9); gpio_init(GPIOB, GPIO_MODE_IPU, GPIO_OSPEED_50MHZ, GPIO_PIN_5); gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_6); gpio_pin_remap_config(GPIO_CAN0_PARTIAL_REMAP , ENABLE); gpio_pin_remap_config(GPIO_CAN1_REMAP, ENABLE); } void can_config(void) { can_parameter_struct can_parameter; can_fdframe_struct can_fd_parameter; can_fd_tdc_struct can_fd_tdc_parameter; can_struct_para_init(CAN_INIT_STRUCT, &can_parameter); can_deinit(CAN0); can_deinit(CAN1); can_parameter.time_triggered = DISABLE; can_parameter.auto_bus_off_recovery = DISABLE; can_parameter.auto_wake_up = DISABLE; can_parameter.auto_retrans = ENABLE; can_parameter.rec_fifo_overwrite = DISABLE; can_parameter.trans_fifo_order = DISABLE; can_parameter.working_mode = CAN_NORMAL_MODE; can_init(CAN0, &can_parameter); can_init(CAN1, &can_parameter); can_frequency_set(CAN0, CAN_BAUD_RATE); can_frequency_set(CAN1, CAN_BAUD_RATE); can_struct_para_init(CAN_FD_FRAME_STRUCT, &can_fd_parameter); can_fd_parameter.fd_frame = ENABLE; can_fd_parameter.excp_event_detect = ENABLE; can_fd_parameter.delay_compensation = ENABLE; can_fd_tdc_parameter.tdc_filter = 0x04; can_fd_tdc_parameter.tdc_mode = CAN_TDCMOD_CALC_AND_OFFSET; can_fd_tdc_parameter.tdc_offset = 0x04; can_fd_parameter.p_delay_compensation = &can_fd_tdc_parameter; can_fd_parameter.iso_bosch = CAN_FDMOD_ISO; can_fd_parameter.esi_mode = CAN_ESIMOD_HARDWARE; can_fd_init(CAN0, &can_fd_parameter); can_fd_init(CAN1, &can_fd_parameter); can_fd_frequency_set(CAN0, CANFD_BAUD_RATE); can_fd_frequency_set(CAN1, CANFD_BAUD_RATE); can1_filter_start_bank(14); can_filter_mask_mode_init(DEV_CAN0_ID, DEV_CAN0_MASK, CAN_EXTENDED_FIFO0, 0); can_filter_mask_mode_init(DEV_CAN1_ID, DEV_CAN1_MASK, CAN_EXTENDED_FIFO0, 15); nvic_irq_enable(CAN0_RX0_IRQn, 7, 0); nvic_irq_enable(CAN1_RX0_IRQn, 7, 0); can_interrupt_enable(CAN0, CAN_INTEN_RFNEIE0); can_interrupt_enable(CAN1, CAN_INTEN_RFNEIE0); }

2023-05-31 上传