如何生成图像从原始数据和找到峰值

7视图(30天)
你好,我有下面的数据集,第一列显示了轴和第二列显示了轴。
我想创建图像的数据集和找到峰值下图所示
拯救X和Y轴的值对应的峰值。
我如何用MATLAB

答案(2)

Nikhilesh
Nikhilesh 2023年1月27日
对于你的情况最好是如果你能说出我想创造一个情节/图的数据集,而不是图像。绘制数据您可以使用下面的代码。
情节(数据集(:1)数据集(:,2));
请仔细看一下“max”功能。你可以使用它来找到峰值
peak_value = max(数据集(:,2));
peak_index =找到(数据集(:,2)= = peak_value);
peak_x =数据集(peak_index, 1);
peak_y =数据集(peak_index, 2);
1评论
地中海的未来
地中海的未来 2023年1月31日
我有两个峰值在接下来的数据集。你能修改的代码。
为例。找到第一个峰值及其X和Y值。然后找到第二峰值及其X和Y值。
和减去第二个X值1 X值。

登录置评。


马修•诺伊
马修•诺伊 2023年1月27日
编辑:马修•诺伊 2023年1月27日
你好
试试下面这段代码
存储在峰值坐标 xmax ymax
为一个峰, 马克斯 是充分的;如果您需要识别多个山峰可以使用 findpeaks、islocalmax islocalmin
负载(“DatasetCir.mat”)
x =数据集(:1);
:y =数据集(2);
%找到最大价值
[ymax, idx] = max (y);
xmax = x (idx);
情节(x, y,“o”xmax ymax,“* r”);
文本(ymax xmax * 1.005,“x =”num2str (xmax)]);
文本(ymax xmax * 1.005 * 0.95,“y =”num2str (ymax)]);
7评论
马修•诺伊
马修•诺伊 2023年1月31日
这里的另一个altrenative
这是非常简单的使用这个函数只问你峰发现的数量
它不同于更复杂的功能像findpeaks(许多选项)
负载(“twopeaksdata.mat”)
x = Twopeaksdata (: 1);
y = Twopeaksdata (: 3);
%找到最大价值
% (ymax idx] = findpeaks (y,“NPeaks”2“SortStr”,“下”);
% (ymax idx] = findpeaks (y, MinPeakHeight,马克斯(y) / 2,“SortStr”,“下”);
%替代与peakfind
Np = 2;
[PeakData] = peakfind (x, y, Np);% PeakData是3列数组:数据指数,x, y值
xmax = PeakData (:, 2);
ymax = PeakData (: 3);
% 1 X值减去第二X值。
△= xmax (2) - xmax (1)
情节(x, y,“o”xmax ymax,“* r”);
ck = 1:元素个数(xmax)
文本(xmax (ck) + 0.05 *马克斯(x) ymax (ck), (“x =”num2str (xmax (ck))));
文本(xmax (ck) + 0.05 *马克斯(x) ymax (ck) * 0.95 (“y =”num2str (ymax (ck))));
结束
函数[PeakData] = peakfind (Xdata、Ydata NumPeaks)
%函数[PeakData] = peakfind (Xdata、Ydata NumPeaks)
%返回数组PeakData NumPeaks条目组成的
%,xindex xvalue yvalue
%如果Ydata是一个复杂的数组,看看大小。
%
%确定面向数据行(MN)
Xdata = (Xdata (:))”;
Ydata = (Ydata (:))”;
iYpeak = 3;
PeakState =[1 1负];
PeakData = [];
ibeg = 1;%忽略直流线
iend =长度(Ydata);
如果~伊斯雷尔(Ydata)
Ydata = abs (Ydata);
结束;
我= 1:NumPeaks
第九=找到(Ydata (ibeg: iend) >(负无穷,Ydata (ibeg: iend-1)] &%必须>点离开
Ydata (ibeg: iend) > (Ydata (ibeg + 1: iend),负)&%必须>点吧
Ydata (ibeg iend): < PeakState (iYpeak));%必须<先前的高峰
如果第九isempty ()
[y,第九]= max (Ydata);%不再山峰:马克斯
其他的
[y,我]= max (Ydata (ix));%有更多:最大
第九第九=(我);
结束;
PeakState = [ix, Xdata (ix), y);
PeakData = [PeakData; PeakState];
结束

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!