MATLAB实时脚本分析系统的类冲激响应,并绘制伯德图

2023-11-01 12:51

本文主要是介绍MATLAB实时脚本分析系统的类冲激响应,并绘制伯德图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目的

这里使用自动驾驶车的转向角度作为输入模拟冲激信号
输出分别为:横向加速度,yaw rate和推定的侧滑角
通过对输入和输出进行傅里叶变换,求出频域的比例关系后绘制伯德图。以观察车辆的传递特性
*由于包含数据的机密性分析结果就不放实际数据图片了,只是作为学习笔记分享一下代码的思路

1. 导入数据

使用CAN信号的记录文件并转换为.mat数据文件后进行分析,每一个数据对应了一个采样时间文件,其中的数据是一一对应的。

close all
clear variables%选择信号文件
filename = 'ImpulseSignal.mat';
load(filename);%测试用信号 V = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
S = VehicleSpeed_t1;            %车速(测试用)
StAngle = SteerAngle_t2;        %前轮方向转角(输入)
lAcc = Acc_t3;                  %横向加速度(输出)
Yaw = YawRate_t4;               %yaw rate(输出)
SlAngle = SlipAngle_t5;         %推定侧滑角度(输出)

1.1 参数设定

  • 有效信号的分割点信息
  • 我这里使用的是等间距的冲激信号作为输入,如下图所示,需要将每一个独立的信号分割后进行傅里叶分析
    在这里插入图片描述
%有效信号的分割点信息
Seginfo_test = [350 240 3];               %[有效信号的起始点,冲激信号间隔,冲激信号总数]
Seginfo_1 = [];
seginfo = Seginfo_test;                   
n = seginfo(3);

读取数据部分和相应的时间戳部分,如果输入和输出的采样时间不一致需要将高频数据降采样处理。这里我的转向角输入t2和侧滑角输出t5的采样时间是其他信号的两倍,所以降采样使其保持一致。
为了生成预备数据,代码从这里开始执行到第二章FFT,直到最后全部数据生成后再向后执行。

Y_data = 'SlAngle'
if strcmp(Y_data,'StAngle')Y = downsample(StAngle,2);T = downsample(t2,2);dataid = 1;elseif strcmp(Y_data,'lAcc')Y = lAcc;T = t3;dataid = 2;elseif strcmp(Y_data,'Yaw')Y = Yaw;T = t4;dataid = 3;elseif strcmp(Y_data,'SlAngle')Y = downsample(SlAngle,2);T = downsample(t5,2);dataid = 4;
elseY = S;T = t2;dataid = 0;
endt_sample = mean(diff(T))    % Sampling perios/time
Fs = round(1/t_sample)      % Sampling frequency                    
L = size(Y,1)               % Length of signal          

1.2 初始信号

plot(T(1:L),Y(1:L))         %绘制初始信号图
title("转向角")
xlabel("t (seconds)")
ylabel("S(t)")

在这里插入图片描述

1.3 分割信号

%按照分割点的信息自动求出时间切片和对应的index
start_id=round(seginfo(1)/(t_sample/0.01));
interval=round(seginfo(2)/(t_sample/0.01));
for ii=1:nr=start_id+(ii-1)*interval:start_id+ii*interval-1;time_slice{ii}=T(r);time_index{ii}=(r)';
end
1.3a 有效信号部分样本

impulse_id=1;                                                   %选定N个有效冲激信号中的第impulse_id个绘制图形
%Y_m = mean(Y(time_index{impulse_id}))                          %信号取平均的两种方法
%Y_d = detrend(Y(time_index{impulse_id}), 0);
figure(1);
clf;
plot(time_slice{impulse_id},Y(time_index{impulse_id}),'--')     %绘制初始信号
hold on
plot(time_slice{impulse_id},Y(time_index{impulse_id})-Y_m)      %绘制取平均后的信号title(['handle angle ID:',num2str(impulse_id)])
xlabel("t (seconds)")
ylabel(['S',num2str(impulse_id),'(t)'])

在这里插入图片描述

1.3b 生成全部的冲激信号切片,并按顺序保存
for ii=1:n%Ym = mean(Y(time_index{ii}));    %这里我不取平均了,因为对傅里叶分析的结果没有影响S_x{ii} = time_slice{ii};%S_y{ii} = Y(time_index{ii}-Y_m);S_y{ii} = Y(time_index{ii}); 
end

1.4 快速傅里叶变换(FFT, Fast Fourier Transform)

Sf=fft(S_y{impulse_id});              %FFT
Li = size(S_y{impulse_id},1)          %信号长度
P2 = Sf/Li;
P_Sf = P2(1:Li/2);
P_Sf(2:end-1) = 2*P_Sf(2:end-1);      %取前半部分数据

作图

figure(2);
clf;Px = (Fs*(0:(Li/2)-1)/Li)';             %根据奈奎斯特频率取(Fs/2)
plot(Px,P_Sf)
%xlim([0 Fs/2]);                       
%plot(Fs*(0:(Li/2))/Li,P1) 
title("Fast Fourier Transform of S(f)")
xlabel("f (Hz)")
ylabel(['FFT[S',num2str(impulse_id),'(t)]=S',num2str(impulse_id),'(f)'])

在这里插入图片描述

2.FFT数据生成

for x=1:nFFT = fft(S_y{x});L = size(S_y{x},1);FFT = FFT/L;FFT = FFT(1:L/2);FFT(2:end-1) = 2*FFT(2:end-1);if dataid == 1Res_StAngle{x} = FFT;            %转向角(输入)elseif dataid == 2Res_lAcc{x} = FFT;               %横向加速度(输出)elseif dataid == 3Res_Yaw{x} = FFT;                %Yawrate(输出)elseif dataid == 4Res_SlAngle{x} = FFT;            %侧滑角(输出)end
end

3.生成比例数据

  • 输入和输出的比例反映了系统的响应特征,也就是传递函数
  • 我们可以利用得到的特征数据和标准模型进行对比,从而观察出外界因素对系统响应的影响
for x=1:nRes_lAcc_R{x} = Res_lAcc{x}./Res_StAngle{x};Res_Yaw_R{x} = Res_Yaw{x}./Res_StAngle{x};Res_SlAngle_R{x} = Res_SlAngle{x}./Res_StAngle{x};
endRes_lAcc_sum = 0;
Res_Yaw_sum = 0;
Res_SlAngle_sum = 0;for i=1:n   Res_lAcc_sum = Res_lAcc_sum + Res_lAcc_R{i};Res_Yaw_sum = Res_Yaw_sum + Res_Yaw_R{i};Res_SlAngle_sum = Res_SlAngle_sum + Res_SlAngle_R{i};
end%计算所有冲激响应的均值
Res_lAcc_mean = Res_lAcc_sum/n;
Res_Yaw_mean = Res_Yaw_sum/n;
Res_SlAngle_mean = Res_SlAngle_sum/n;

4.結果

4.1 转向角(输入)→横向加速度(输出1)

*由于数据的机密性这里开始就不放图片了

figure(3);
clf;
ax = (Fs*(0:(Li/2)-1)/Li)';subplot(2,1,1);
semilogx(ax,20*log10(abs(Res_lAcc_mean))); grid on;
title("转向角→横向加速度")
%xlabel('f (Hz)')
ylabel('Gain[dB]')subplot(2,1,2);
semilogx(ax, 180/pi*angle(Res_lAcc_mean)); grid on;
xlabel('f (Hz)')
ylabel('相位[deg]')

4.2 转向角→yawrate(输出2)

figure(4);
clf;subplot(2,1,1);
semilogx(ax,20*log10(abs(Res_Yaw_mean))); grid on;
title("转向角→yawrate")
ylabel('Gain[dB]')
subplot(2,1,2);
semilogx(ax,180/pi*angle(Res_Yaw_mean)); grid on;
xlabel('f (Hz)')
ylabel('相位[deg]')

4.3 转向角→侧滑角(输出3)

figure(5);
clf;subplot(2,1,1);
semilogx(ax,20*log10(abs(Res_SlAngle_mean))); grid on;
title("转向角→侧滑角")
ylabel('Gain[dB]')subplot(2,1,2);
semilogx(ax,180/pi*angle(Res_SlAngle_mean)); grid on;
xlabel('f (Hz)')
ylabel('相位[deg]')
  • 20230630完

这篇关于MATLAB实时脚本分析系统的类冲激响应,并绘制伯德图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/323117

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识