如何使用matlab代码计算时钟周期中的上升沿数?

时间:2015-11-02 04:42:29

标签: matlab counter simulink clock

我们如何使用MATLAB代码计算时钟周期中的上升沿数? 我试过这个 -

 counter = o ;
    for (clock > 0)
    counter = counter +1;
    end

1 个答案:

答案 0 :(得分:0)

评论中讨论的代码存在很多问题,但假设您的信号在两种状态之间发生变化,例如

sum(diff(clock) > 0)

然后这个简单的表达式将计算上升沿的数量:

for

在不了解您正在处理的数据类型的情况下,很难提供更好的答案,实际上这只适用于每个正转换被视为上升沿的情况,即信号中没有噪声。

如果你真的想使用counter = 0; for find(clock > 0) counter = counter +1; end 循环,那么试试这个:

clock > 0

但这不会计算上升沿,而是counter = sum(clock > 0)的实例数,这也可以仅使用clock来实现。请注意,在for循环中,如果for find(clock > 0)'是列向量,那么您需要使用for find(clock > 0)而不是% Initialise clocks x = [0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0]; y = [0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0]; % Initialise counter count = zeros(size(y)); counter = 0; % Loop through signals (note that x and y should be the same length) for i = 2:numel(y) % Find rising edge on x if x(i - 1) == 0 && x(i) == 1 counter = 0; end % Find rising edge on y if y(i - 1) == 0 && y(i) == 1 counter = counter + 1; end % Store current value of counter for display count(i) = counter; end figure; subplot(3, 1, 1); stairs(x); ylabel('x'); subplot(3, 1, 2); stairs(y); ylabel('y'); subplot(3, 1, 3); stairs(count); ylabel('counter'); (请注意该行末尾的勾号)。

更新以解决您的评论。

var multiSelect = new MultiSelect({
   multiple: false,
   size: 3
});

这将提供以下输出:

enter image description here