【问题标题】:How to select values in an array until a threshold value?如何选择数组中的值直到达到阈值?
【发布时间】:2020-07-22 08:59:30
【问题描述】:

我会解释我的问题。我有一个 1x1701 采样数组“resampled_WF”,一旦我找到了这个数组的最大值(“peak_WF”),我设置了一个阈值 0.7*peak_WF,我想选择数组中最接近这个的值临界点。 例子: power_vs_time_threshold

如您所见,我只能选择类似于...的第一个值,但我想获得最后一个值(大约 t=2 秒)。 我试图用“翻转”功能翻转数组:

WF_threshold_input = 0.7*peak_WF;
flip_resampled_WF = flip(resampled_WF);
diff_peak_threshold = peak_WF - WF_threshold_input; %power loss at 70% power reduction
diff_peak_WF = peak_WF - flip_resampled_WF;
min_diff_threshold = min(abs(diff_peak_WF-diff_peak_threshold));

这样做,MATLAB 计算整个数组的最小差异,我想停在第一个值,而不考虑其他值。 我尝试选择值

如何正确选择值?

谢谢!!

【问题讨论】:

    标签: arrays matlab


    【解决方案1】:

    对矩阵使用运算将调用矩阵中每个元素的运算。您要做的是使用循环,以便您可以准确控制要检查的元素,然后跳出循环。

    index = length(resampled_WF);
    
    your_threshold = ...
    
    while resampled_WF(index) < your_threshold
       index = index - 1;
    end
    

    while 循环将继续迭代,直到达到超出您定义的阈值的值。

    执行后,index 的值将是数组中超出阈值的最远值的索引。执行代码后,您可以通过查看resampled_wf(index) 来访问阈值之外的最远值。

    我们不必担心 index 的值离开数组的边界,即 resampled_wf < your_threshold 保证满足您最初生成阈值的最大值。

    【讨论】:

    • 使用 while 循环的好主意!我得到了我需要的东西,谢谢!
    猜你喜欢
    • 2017-11-29
    • 2021-09-23
    • 1970-01-01
    • 2021-11-14
    • 2020-05-31
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多