How can I match a value on a matlab plot?

조회 수: 3 (최근 30일)
Julia de Lange
Julia de Lange 2018년 1월 11일
댓글: Star Strider 2018년 1월 12일
I have identified the first peak value in my dataset. I'd like to know the first x-value at the point at which this peak y-value occurs again. Any suggestions? p

채택된 답변

Star Strider
Star Strider 2018년 1월 11일
편집: Star Strider 2018년 1월 11일
Use the ‘locs’ value:
[pks,locs] = findpeaks(Voltage, 'MinPeakDist',2000, 'NPeaks',1);
peakTimes = Time(locs);
See the plot call in my previous code to demonstrate how to do this.
EDIT
‘I'd like to determine x (time) the next time 1.4147 (y, voltage) occurs.’
This will give all the ‘Voltage’ and ‘Time’ values that equal or exceed the initial peak value:
[D,S,R] = xlsread('Data.xls');
Time = D(:,1);
Voltage = D(:,2);
[pks,locs] = findpeaks(Voltage, 'MinPeakDist',2000, 'NPeaks',1, 'MinPeakHeight',1.2);
VoltageThreshold = Voltage - pks*0.99;
zci = @(v) find(v(:).*circshift(v(:), [-1 0]) <= 0); % Returns Approximate Zero-Crossing Indices Of Argument Vector
zx = zci(VoltageThreshold);
TimeNew = Time(zx); % Time Vector, Voltage >= VoltageThreshold
VoltageNew = Voltage(zx); % Voltage Vector, Voltage >= VoltageThreshold
figure(1)
plot(Time, Voltage)
hold on
plot(Time(locs), Voltage(locs), '+g')
plot(TimeNew, VoltageNew, '+r')
hold off
grid
  댓글 수: 12
Julia de Lange
Julia de Lange 2018년 1월 12일
worked, thank you!
Star Strider
Star Strider 2018년 1월 12일
As always, my pleasure!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

SRT HellKitty
SRT HellKitty 2018년 1월 11일
Say you have data with peaks for the Y-Axis and linear data for the X-Axis
Y = [1:5,1:5,1:5];
X = [1:15];
Now you have 3 peaks in Y, when it equals 5. If you want to know what value of X is when Y is equal to 5 you could do a logical index;
X_at_peaks = X(Y == 5);
That would show that X is 5, 10, and 15 when Y is equal to 5.
  댓글 수: 2
Julia de Lange
Julia de Lange 2018년 1월 11일
편집: Julia de Lange 2018년 1월 11일
Let me give you more details. I have attached my data with one time (x) plotted versus voltage (y). I have found the first peak to occur at (1.037,1.4147). I'd like to determine x (time) the next time 1.4147 (y, voltage) occurs.
SRT HellKitty
SRT HellKitty 2018년 1월 11일
If voltage is exactly 1.4147 another time in the data, do the logical indexing with respect to time
Peaks = time (Voltage == 1.4147)

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Descriptive Statistics에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by