如果只是chat GPT 我会自行使用,请不要纯搬运AI答案
duration_of_one_win=128;
no_of_secs_bet_con_wins=0;
gap_between_win_starts = duration_of_one_win - no_of_secs_bet_con_wins;
wins.t_start=1:gap_between_win_starts;
wins.t_end=wins.t_start + duration_of_one_win;
%% estimates the RR using Count Orig
rr.t = mean([wins.t_start(:)' ; wins.t_end(:)']); rr.t = rr.t(:);
rr.v = nan(length(rr.t),1);
% Cycle through windows
for win_no = 1 : length(wins.t_start)
% identify peaks
diffs_on_left_of_pt = diff(data_resp.v); diffs_on_left_of_pt = diffs_on_left_of_pt(1:(end-1)); diffs_on_left_of_pt = logical(diffs_on_left_of_pt>0);
diffs_on_right_of_pt = diff(data_resp.v); diffs_on_right_of_pt = diffs_on_right_of_pt(2:end); diffs_on_right_of_pt = logical(diffs_on_right_of_pt<0);
peaks = find(diffs_on_left_of_pt & diffs_on_right_of_pt)+1;
% identify troughs
diffs_on_left_of_pt = diff(data_resp.v); diffs_on_left_of_pt = diffs_on_left_of_pt(1:(end-1)); diffs_on_left_of_pt = logical(diffs_on_left_of_pt<0);
diffs_on_right_of_pt = diff(data_resp.v); diffs_on_right_of_pt = diffs_on_right_of_pt(2:end); diffs_on_right_of_pt = logical(diffs_on_right_of_pt>0);
troughs = find(diffs_on_left_of_pt & diffs_on_right_of_pt)+1;
% define threshold
q3 = quantile(data_resp.v(peaks), 0.75);
thresh = 0.2*q3;
% find relevant peaks and troughs
extrema = sort([peaks(:); troughs(:)]);
rel_peaks = peaks(data_resp.v(peaks) > thresh);
rel_troughs = troughs(data_resp.v(troughs) < 0);
% find valid breathing cycles
% valid cycles start with a peak:
valid_cycles = zeros(length(rel_peaks)-1,1);
cycle_durations = nan(length(rel_peaks)-1,1);
for peak_no = 1 : (length(rel_peaks)-1)
% valid if there is only one rel_trough between this peak and the next
cycle_rel_troughs = rel_troughs(rel_troughs > rel_peaks(peak_no) & rel_troughs < rel_peaks(peak_no+1));
if length(cycle_rel_troughs) == 1
valid_cycles(peak_no) = 1;
cycle_durations(peak_no) = data.t(rel_peaks(peak_no+1)) - data.t(rel_peaks(peak_no));
end
ave_breath_duration = nanmean(cycle_durations);
end
if sum(valid_cycles) == 0
rr.v(win_no) = nan;
continue
end
% Calc RR
% Using average breath length
rr.v(win_no) = 60/ave_breath_duration;
end
希望达成的:ave_breath_duration动态赋值,填入rr.v数组
实际上:ave_breath_duration的值固定,rr.v循环出一样的值