Extract a range of frequencies and power from X-Y vector/array

1 view (last 30 days)
Hello,
I hope you are in good health.
I am trying to select a range of frequencies and their corresponding power from the given data set.
load phaseNoise.mat
plot(fnew,pnew)
xRange_new = fnew(fnew == 10e+009 | fnew <= 30e+009);
x_index = find (fnew == xRange_new);
Arrays have incompatible sizes for this operation.
yRange_new = pnew(x_index);
plot(xRange_new, yRange_new)
However, I get an error when I try to find the indexes of the specific frequencies saying that 'Arrays have incompatibel sizes for this operation.'. I know that the array sizes are different but I want to know how can I extract the x and y values simultaneously. I can use the zoom feature to only display the part I want but that's not what I want.
(If finding the indexes of the x values are not necessary then guide me on achieving the desired results so...)
Basically, I want to only select the frequencies from 10GHz to 30GHz and their corresponding Y-values and discard the rest of the values so I can display the graph from 10GHz to 30GHz and perform further analysis on the given range only.
Any help will be appreciated.
BR.

Accepted Answer

Mathieu NOE
Mathieu NOE on 27 Sep 2022
hello
some minor bugs , see comments
this is what you wanted :
load phaseNoise.mat
plot(fnew,pnew)
x_index = (fnew >= 10e+009 & fnew <= 30e+009); % & , not | !!; also, logical indexing suffices , no need to use "find"
xRange_new = fnew(x_index);
yRange_new = pnew(x_index);
plot(xRange_new, yRange_new)
  4 Comments

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!

Translated by