Getting directly range of value from MATLAB table?
31 views (last 30 days)
Consider I have a MATLAB table which contains a frequency value from 1 Hz to 1000 Khz. From here I want to take only data between 300 Khz to 400 Khz. I donot want to use indexing . Is there anything i can do to extract directly the values ranging from 300 Khz to 400 Khz.
My f should have value like this in script (without indexing)
f = 300 Khz to 400 Khz
Star Strider on 8 Oct 2020
Freq = 1:10:1E+6; % Create Frequencies
Amplitude = randn(size(Freq(:))) +1j*randn(size(Freq(:))); % Create Amplitude (Or Whatever The Rest Of The Table Contains)
T1 = table(Freq(:),Amplitude); % Create Table
A1 = table2array(T1); % Extract Data Array (Eaiser To Work With Here)
FreqRange = (300:400)*1E+3; % Define As 300kHz - 400kHz
F300_400 = interp1(A1(:,1),A1(:,2), FreqRange).'; % Use Interpolation To Extract Desired Data —> No Indexing!
T2 = table(FreqRange(:), F300_400); % New Table (If Desired)
More Answers (1)
Jon on 8 Oct 2020
Edited: Jon on 8 Oct 2020
I'm not sure what you mean by not using indexing. In case this helps here is one way to do it. Suppose you have a table T, with columns f (in Hz) and x for the frequency and corresponding data values resp
f = T.f(T.f >= 300e3 & T.f <= 400e3)
x = T.x(T.f >= 300e3 & T.f <= 400e3)
or somewhat more efficiently:
idl = T.f >= 300e3 & T.f <= 400e3
f = T.f(idl)
x = T.x(idl)