写在开头:临近期末,正在复习Matlab课程,顺便将自己的感悟写下,仅作记录,如有错误欢迎指正。


III.Siganlanalyse

1.对坐标数据进行处理

目标:给一个包含(x,y,z)信息的txt文件,从Matlab中读取,并将它plot出来。

S=importdata('文件名')H=S.data.*1e-3; %s里的数据单位保持一致(毫米转化成米)L=4e-3 %数据的长度 从txt文件中得知,或者使用nomal()X=size(H,1)Y=size(H,2)%Size函数获得的是目标的维度信息,如[3,4]X=linspace(0,L,X);Y=linspace(0,L,Y);%Y从1->L 每隔Y个间距,一个点surf(X,Y,H); %将 三维信息 展示出来zlim(min(min(H)), max(max(H))); %H是峰值,所以要对z轴的高度进行限制,H是一个矩阵max(H)是矩阵中所有列最大项,max(max(H))为所有列最大项中的最大项,即为H矩阵中最大项。title('Topographie');%添加标题xlabel('x-position[m]');ylabel('y-position[m]');zlabel('Hohe[m]'); %对坐标轴添加信息

Ubung练习1

% Programmbeschreibung: Ubung zur Vorlesung 9% Autor:Jiangshunxin% Datum:24.1.2021clear allclose allclc%Pragramm Anfang%%S=importdata("data_time.txt");t=S.data(:,1);L=S.data(:,2:5);figureplot(t,L);title('U9');xlabel('x-position[t]');ylabel('y-position Mess');legend({'L1','L2','L3','L4'},'location','best')xlim([min(t) max(t)]);grid on;box on;save('data_time','t','L');saveas(gcf,'U9A1.fig');saveas(gcf,'U9A1.png');%%%Programm Ende

t=s.data()-读取数据,

gcf-获取当前图窗句柄

xlim[min() max()]限制x轴显示区域

box on 显示坐标区框轮廓

U9数据处理图像

2.对信号数据进行处理

1.信号的直接处理

  • 使用离散傅里叶变换

[y,Fs]=audioread('文件名'); % y是采样数据(时间数据向量);Fs是采样率N=momel(y); %获取采样数据的采样点个数Yc=fft(y)/N; %计算FFT,fft是N个测量点的信息,Yc是包含幅值和相位移的复数信息的矩阵Y=2*abs(Yc(1:N/2+1)); %Yc(1:N/2+1)去除Yc信息矩阵中复数部分,abs()将Yc中负数部分去除,故需要*2Y(1)=Y(1)/2; %由于上下对称性,确定幅值/2fB=Fs/2;%信号的带宽,DFT中只有实数值,由于共轭所以/2f=fB*linspace(0,1,N/2+1); %df=fs/N =fB/N/2, 此处f为从fB->0间距递减的值,为x轴坐标。plot(f,Y);title('Frequenzspektrum des Quietschens');ylabel('Amplitude[-]');xlabel('Frequenz[Hz]');
  • 带宽fB是采样率(Fs)的一半

  • 带宽Fb包含(Nf=N/2+1)个频率线,它们将Fb均分。

2.窗函数解决频谱泄露

函数:使用汉明窗

win=windows(@handle,N)->win = hann(N)
  • win:权重因子

  • N:采样点数

使用匿名函数

hannwin=@(N)0.5*(1+cos((2*pi*linspace(-N/2,N/2-1,N))/N));function win = hannwin(N)nWin = linspace(-N/2,N/2-1,N);win=0.5*(1+cos((2*pi*nWin)/N));end 

优化后的信号处理代码

[y,Fs]=audioread('文件名'); % y是采样数据(时间数据向量);Fs是采样率N=numel(y); %获取采样数据的采样点个数win=hann(N);y=y.*win;Yc=fft(y)/N; %计算FFT,fft是N个测量点的信息,Yc是包含幅值和相位移的复数信息的矩阵Y=2*abs(Yc(1:N/2+1)); %Yc(1:N/2+1)去除Yc信息矩阵中复数部分,abs()将Yc中负数部分去除,故需要*2Y(1)=Y(1)/2; %由于上下对称性,确定幅值/2fB=Fs/2;%信号的带宽,DFT中只有实数值,由于共轭所以/2f=fB*linspace(0,1,N/2+1); %df=fs/N =fB/N/2, 此处f为从fB->0间距递减的值,为x轴坐标。hannwin=@(N)0.5*(1+cos((2*pi*linspace(-N/2,N/2-1,N))/N));function win = hannwin(N)nWin = linspace(-N/2,N/2-1,N);win=0.5*(1+cos((2*pi*nWin)/N));endplot(f,Y);title('Frequenzspektrum des Quietschens');ylabel('Amplitude[-]');xlabel('Frequenz[Hz

3.光谱图

  • 使用快速傅里叶变换对无穷周期信号定义

公式:N=[1+(ns-1)(1-overlap)]*L

N:信号的整体长度

L:单个片段的长度

ns:片段数

overlap:单个片段的重叠百分比

nsec=500; %片段数overlap = 0.5; %定义重叠百分比L=floor(N/(1+(nsec-1)*(1-overlap))); %floor将每个元素四舍五入得到整数L=L-mod(L,2);  %精确计算L的长度start = floor(linspace(1,N-L,nsec));ende = start+L-1; Amp = zeros(L/2+1,nsec); %准备好存储的0矩阵win = hann(L); %汉明窗函数for idx = 1:nsec % 使用FFT计算  y_idx = y(start(idx):ende(idx)); % 选择段落  y_idx = y_idx.*win*L/sum(win); % 窗函数并修正峰值  Yc = fft(y_idx)/L; % 使用快速傅里叶变换计算  Amp(:,idx) = 2*abs(Yc(1:L/2+1));   Amp(1,idx) = Amp(1,idx)/2; %计算峰值endfigure imagesc(t,f/1000,Amp); % 补充颜色%imagesc(t,f/1000,log10(Amp); %使用Log函数让图谱颜色区更深c = colorbar; % Drehen der Ansicht view(0,-90); % 旋转视图title('Spektrogramm "Quietschen.wav"'); xlabel('Zeit in s'); ylabel('Frequenz in kHz'); ylabel(c,'Amplitude in -'); %caxis([0 0.01]); %添加刻度%%%%%%%%%%%%%%%%%%%%%figure spectrogram(y,hann(L),L/2,L,Fs, 'yaxis'); title('Spektrogramm mit Toolbox'); %使用Toolbox函数直接输出图像,y-数据向量,win-权重,L/2-重叠数据点的数量,%L-快速傅里叶变换中数据点的数量,Fs-采样率,'yaxis'-频率在y轴显示

4.数字滤波

  1. 计算过滤因子(Butterworth Filter)

[b,a] = butter(ord, Wn, 'ftype');

[b,a]-Filterkoeffizienten,ord-过滤阶数 ,Wn-Normierte Grenzfrequenz,'ftype'-过滤类型

Normierte Grenzfrequenz:

Wn=fg/fb=fg/(0.5*Fs)

  • fg:Grenzfrequenz,限制频率

  • fb:Signalbandbreite,信号带宽

  • Fs:Abtastfrequenz,采样率

Filtertypen:

'high'->Hochpass-高通,'low'->低通,

'stop'->Bandsperre Wn=[w1,w2], '-'->Bandpass Wn=[w1,w2]

  1. 计算 ord和Wn 阶数和过滤因子

[ord,Wn] = buttord(Wp,Ws,Rp,Rs);
  • Rs: Min.Sperrdämpfung in dB/最小抑制波段衰减

  • Rp: Durchgangsdämpfung in dB/通过波段

  • Ws: Normierte Sperrfrequenz/标定抑制频率

  • Wp: Normierte Durchlassfrequenz/标定通过频率

  1. 描绘分析过滤

freqz(b,a,n,Fa);

b,a->Filters 的因子,n-Frequenzauflösung频率选择,Fa-采样比率-类似50%,

[h,tf]=freqz(b,a,n,Fa);

输出峰值和相位曲线在复数矩阵 h和对应频率 tf

freqz(b,a,1000,500),n=1000,Fa=500

  1. 使用Matlab中的过滤函数

  • fftfilt()->FFT-based FIR filtering

  • filtfilt()->Zero-phase digital filtering

...[ord,Wn] = buttord(5000/0.5/Fs,6500/0.5/Fs,3,40); [b,a] = butter(ord,Wn, 'low'); y = filtfilt(b,a,y); %使用滤波函数...

Ubung 练习2

%Programmbeschreibung:%Ubung9 A2 zur Vorlesung9%Autor:Jiangshunxin%Datum:24.1.2021clear allclose allclc%%%Programm Anfang[y,Fs]=audioread('Sirene.mp3');y=y(:,1); %选择声道N=numel(y);N=N-mod(N,2); %剔除被2除后余数部分,因为要处理N/2y=y(1:N);win = hann(N);yf=y.*win;yf=yf.*N./sum(win);%使用汉明窗修正Yc = fft(y)/N;Ycf = fft(yf)/N;%使用快速傅里叶变换计算频率图谱Amp = 2*abs(Yc(1:N/2+1));Amp(1)=Amp(1)/2;Ampf = 2*abs(Ycf(1:N/2+1));Ampf(1)=Ampf(1);%计算峰值图谱fb=Fs/2;f = fb*linspace(0,1,N/2+1);%对频率分段figureplot(f,Amp,'b-',f,Ampf,'r:');xlabel('Frequenz in Hz');ylabel('Amplitude in -');title('Frequenzspektrum');legend({'ungefensterte Daten','Gefensterte Daten'});grid on; box on;xlim([0 8000]);%调整显示区域从0到8000saveas(gcf,'U9A2.png');saveas(gcf,'U9A2.fig');%%%Programm Ende

U2练习频谱图

matlab利用窗改变幅值_Matlab在车辆中的应用 信号处理分析相关推荐

  1. matlab 图片最多显示几张_matlab在一个figure中显示多幅图像

    以显示2行3列为例: subplot(2,3,1);imshow("1.jpg"); title('first img','fontname','Times New Roman', ...

  2. matlab用plot三点画圆_matlab – 在绘图中的点周围绘制圆圈

    您可以使用 viscircles(这需要 Image Processing Toolbox)轻松完成此操作,但我不认为输出实际上是您所期望的. radius = 0.3524; dots = plot ...

  3. matlab获取全局变量的值_MATLAB中搜索、查询和全局变量的用法(摘录)

    1.MATLAB有几千个函数,而且很多函数有多种调用方式,怎样才能比较快的学习掌握? (1)熟练掌握MATLAB的在线帮助命令.MALTAB的各个函数,不管是内建函数.M文件函数.还是MEX文件函数等 ...

  4. matlab利用滑动条控制图片二值化阈值

    前言 由于做项目的时候需要对图片进行二值化,而且图片不同需要达到二值化的效果也不同,如果一直要在程序里试探阈值比较麻烦.所以想利用图像界面中的滑动条人工控制二值化阈值. 一.主要步骤 1. 在matl ...

  5. zpk在MATLAB中是什么意思,_MATLAB在控制系统中应用 .ppt

    _MATLAB在控制系统中应用 控制系统MATLAB计算与仿真 控制系统MATLAB仿真基础 1 控制系统数学模型 2 系统时域分析 3 系统频域分析 4 系统状态空间分析 5 控制系统的MATLAB ...

  6. matlab计算一组数的函数值_matlab中怎么求一组数据概率最大的数

    好象直接使用就可以了,第一次出现就包含了定义 顺便把些命令弄给你看下 matlab命令 matlab commands and functions list A a abs 绝对值.模.字符的ASCI ...

  7. matlab中用公式求pi值,matlab用π 4公式求π的近似值,直到某一项的绝对值小于10-6为止...

    求问matlab计算的几个公式以及方法. 峰值max峭度应该就是梯度了gradient曲线画图:plot(二维)plot3(三维),其他画图都用这个就够了查matlab文档 求matlab高手,这个公 ...

  8. MATLAB遗传算法求解带过程时间窗和同时取送货的车辆调度问题(VRPSPDTW)代码实例

    MATLAB遗传算法求解带过程时间窗和同时取送货的车辆调度问题(VRPSPDTW)代码实例 实例问题描述:现有一配送中心向14个客户点配送牛奶,并取回奶桶.配总中心和客户点坐标及每个客户点的服务时间如 ...

  9. matlab利用作图法求圆周率

    MATLAB本身,pi返回值最接近基本常数π的浮点数.要注意,MATLAB中定义的pi与基本常数π之间的微小差异会导致计算结果出现微小的误差. 例如,表达式sin(pi)(期望返回0)实际上在MATL ...

  10. Matlab利用M_map和mapshow绘制网格地图

    Matlab利用M_map和mapshow绘制网格地图 最近在做利用网格数据绘制'Lambert'投影的地图,之前没有系统的利用matlab做过相关的工作,花了几天时间,问了专业的同学,最终整理了两种 ...

最新文章

  1. 创建新的apple id_Google是新的Apple吗?
  2. Tomcat5内存简单优化
  3. JSP简单练习-页面重定向
  4. 干货 | 应用性能提升 70%,探究 mPaaS 全链路压测的实现原理和实施路径
  5. ubuntu设置静态ip
  6. 【今日CS 视觉论文速览】Fri, 21 Dec 2018
  7. HTML5 footer元素
  8. ORB-SLMA3的学习笔记
  9. OpenCV-Python实战(14)——人脸检测详解(仅需6行代码学会4种人脸检测方法)
  10. Android流行框架大全
  11. UE4 横板过关 启用WS前后移动且镜头固定
  12. 《人像写真摄影圣经》评价
  13. [linux] Linux网络之TCP协议详解
  14. 1396:病毒 (拓扑序)
  15. UCOSII MailBox
  16. Amazon 4.7 星评,领域新经典,了解服务设计就读它
  17. 为什么计算方差有时候除n,有时候除n-1
  18. 服务过美国总统竞选的非传统投票UI【demo已放出】
  19. 姜思达和机器人_姜思达爱上人工智能是怎么回事?
  20. 剑指Offer(JS版)

热门文章

  1. python opencv 找到圆点标定板所有点后通过距离找四个角点
  2. 卡尔曼滤波(Kalman filtering)算法学习小记
  3. 20200816每日一句
  4. A New Romance Is Likely to End up like Your Previous Relationship 为什么每次恋爱总会走向相似的结局?
  5. 让Latex支持中文
  6. ugmented reality(AR) equipment
  7. Atitit  图像处理底色变红的解决
  8. Atitit.得到网络邻居列表java php c#.net python
  9. atitit.无为而治在企业管理,国家治理,教育领域的具体思想与实践
  10. paip.提升安全性----我们需要多长的密码