MATLAB编程实例-(41)标注大幅变化的位置
发布时间
阅读量:
阅读量
题目
源自Mathwork平台的Cody,Problem 729 - 标记出现的最大幅度波动。
存在一种现象,其结果严格为正值或负值。
delta = [1 -3 4 2 -1 6 -2 -7];
从列表的起始位置依次遍历至末尾,若当前数值为迄今为止所遇到的最大绝对值负数(必须严格大于,而非相等),则将其标记为-1;若当前数值为迄今为止所遇到的最大绝对值正数(同样必须严格大于,而非相等),则将其标记为1;若上述两种情况均不满足,则标记为0。
以上示例的最终输出应为:
result = [1 -1 1 0 0 1 0 -1]
延伸
该问题与实时追踪信号变化中幅度最大的位置具有相似性。
代码实现
function y = magnitude_swing(x)
y1(1)=1;
x1=x(x>0);
for i=2:length(x1)
y1(i)=sign(x1(i))*double(sum(abs(x1(i))>abs(x1(1:i-1)))==(i-1));
end
x2=x(x<0);
y2(1)=-1;
for i=2:length(x2)
y2(i)=sign(x2(i))*doub
全部评论 (0)
还没有任何评论哟~
