前言:本文,从一个模拟摄像机拍摄的光栅图分析入手,尝试找到该光栅图的各个极值,从而来评估光栅的正弦特性:
拍摄的结构光条纹如下:
黄色的线,是用采样软件[imageJ]在结构光的拍摄条纹中选取准备分析的正弦数据:
[imageJ]同样可以输出DATA数据作为数据分析的基础:
数据为excel的CVS的格式。
直接上代码吧,也比较简单。
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