#python #matlab #indexing
Вопрос:
data_tp0 = xlsread(append(con,'_',treatment,string(hrt),'_t',string(tps(1)),'_analysis.xlsx'));
Time_tp0=data_tp0(:,1);
signal_tp0=(data_tp0(:,2));
% signal = sin(Time); %% Raw signal with time period of ~6.5 sec i.e. Freq = 1/6.5 = 0.15 Hz
L = length(Time_tp0);
Fs= L/max(Time_tp0); % Sampling frequency
T = 1/Fs; % Sampling period
Y_tp0 = fft(signal_tp0); % Compute DFT of Signal and get real and imaginary components
P2_tp0 = abs(Y_tp0/L); % Whole spectrum
P1_tp0 = P2_tp0(1:L/2 1); % One-sided spectrum
P1_tp0(2:end-1) = 2*P1_tp0(2:end-1); % Even-valued signal length L.
Что означает односторонняя линия спектра? В частности, в
1:L/2 1 inside of the P2_tp0(1:L/2 1)
Что означает эта индексация? Каков его эквивалент в python?
Аналогично, что означает индексация для этой строки кода и ее эквивалента в python?
P1_tp0(2:end-1) = 2*P1_tp0(2:end-1)
Комментарии:
1.в Python вы также можете использовать
data[1:L/2 1]
, что означаетstart = 1
,end = L/2 1
data[start:end]
. И если вы используетеnumpy.array
с 2D массивом, то вы можете использовать дажеarray[y_start:y_end, x_start:x_end]
илиarray[y_start:y_end, x_index]
илиarray[ : , x_index]
как вdata_tp0(:,2)
2. также обратите внимание, что индексация matlab является конечной, в то время как python-нет.
a[1:3]
в matlab это 3 элемента, аa[1:3]
в numpy-2 элемента.3. в matlab start:stop обычно используется для создания вектора или для индексации существующего вектора, в данном случае вы используете второй… здесь вы переходите от первого индекса вектора к индексу L/2 1.. в python вы можете выполнить тот же вызов
P2_tp0[0:L/2]
или простоP2_tp0[:L/2]
получить фрагмент исходного вектора (или массива).4. Примечание также индексы matlab начинаются с
1
, в то время как python начинается с0