诗岑 2023-03-08 22:47 采纳率: 93%
浏览 32
已结题

【matlab】数组生成的值被覆盖

如果只是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循环出一样的值

  • 写回答

2条回答 默认 最新

  • MarkHan_ 2023-03-09 09:22
    关注

    该回答引用GPTᴼᴾᴱᴺᴬᴵ
    根据提供的代码,ave_breath_duration 是在 for 循环中计算得到的,然后用来计算 rr.v(win_no)。在每个 for 循环迭代中,都会重新计算 ave_breath_duration 的值,因此它是动态赋值的。
    ·
    但是在代码中,计算 ave_breath_duration 的语句放在了 for 循环的内部,每次循环迭代都会重新计算一次 ave_breath_duration,而在每次迭代中,ave_breath_duration 只被用来计算一次 rr.v(win_no) 的值,所以在每个迭代中,ave_breath_duration 的值并没有在其他地方使用或保存。
    ·
    因此,在 rr.v 中出现相同的值可能是由于其他变量或输入数据的问题,或者是代码逻辑的错误。建议检查输入数据和其他变量的值,以及代码的逻辑是否正确。同时,可以添加调试输出语句以帮助调试程序。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月9日
  • 修改了问题 3月8日
  • 创建了问题 3月8日

悬赏问题

  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥20 测距传感器数据手册i2c