用Matlab找一组模拟波形的极值(含极大值、极小值、最大值)并在图中画出来

 前言:本文,从一个模拟摄像机拍摄的光栅图分析入手,尝试找到该光栅图的各个极值,从而来评估光栅的正弦特性:


1 提取数据:

拍摄的结构光条纹如下:

黄色的线,是用采样软件[imageJ]在结构光的拍摄条纹中选取准备分析的正弦数据:

用Matlab找一组模拟波形的极值(含极大值、极小值、最大值)并在图中画出来_第1张图片

[imageJ]同样可以输出DATA数据作为数据分析的基础:

数据为excel的CVS的格式。

用Matlab找一组模拟波形的极值(含极大值、极小值、最大值)并在图中画出来_第2张图片


2 利用Matlab找一组模拟波形的极值

直接上代码吧,也比较简单。

clear all;
%init 
%read data
data1 = xlsread('a.xlsx');


%find the maxim data
hold on;%mix the diagram
plot(data1);
grid on
[maxim,locs]=max(data1);
plot(locs,maxim,'O','color','R');   

% find the peak data in the serial waveforms
peakdata = findpeaks(data1);
[peakdata,locs]=findpeaks(data1);
plot(locs,peakdata,'*','color','g');   


%[~,locs]=findpeaks(data1);
%plot(locs,peakdata,'*','color','b');  
%hold off

%find the mini
data2 = 255 - data1;
peakminidata = findpeaks(data2);
[peakminidata,locs2]=findpeaks(data2);
minidata = 255 - peakminidata;
plot(locs2,minidata,'*','color','b'); 



%plot(locs,peakdata,'*','color','R');   

% mindata = findmini(data1);

 解释一下:

上面这段代码,会读取一段正弦波形的数据,然后分别在图上标识出来最大值,极大值,极小值。 


参考:

1Matlab中利用findpeaks找波峰和波谷

https://blog.csdn.net/it_beecoder/article/details/78681517

2 Matlab 官网 findpeaks的说明

https://ww2.mathworks.cn/help/signal/ref/findpeaks.html

你可能感兴趣的:(MATLAB,机器视觉)