正确的方法来检测零交叉

248(30天)
学历罗伊
学历罗伊 2019年12月6日
编辑: 亚当Danz 2019年12月11日
你好我是实现电力电子电路需要零电流检测器我实现了一个粗糙的函数,检查当前的(通过一个电流传感器)是多少量或不但是由于这仿真速度大大下降。
函数y = ZCD(我)
如果(我< 1 e-8)
y = 1;
其他的
y = 0;
结束
有一个更优雅的方式找到zerocrossings吗?

答案(2)

吉姆·里格斯
吉姆·里格斯 2019年12月10日
编辑:吉姆·里格斯 2019年12月11日
以为你可能要考虑:
如果你把当前值,y (i)的前一个值y(张),这个产品只是消极当y(我)已经越过零。
如果y (i)和y(张)都是积极的,产品是正的,同样,如果他们都是负的,产品是正的。
zerocross = y(我)* y(张)< 0;
现在,如果你在乎无论是上升还是下降,您需要测试登录y(我)
如果zerocross
= y(我)> 0上升;
下降= y (i) < 0;% = ~上升(或下降)
结束
你可以让这个函数:
函数zerocross = detectzerocross (x)
持续的去年
如果isempty(去年)%初始化持久变量
去年= 0;
结束
最后zerocross = x * > 0;% = TRUE当x穿过零
= x;
结束
这个函数“记住”最后x的值每次调用它。

亚当Danz
亚当Danz 2019年12月6日
编辑:亚当Danz 2019年12月11日
整个函数可以取而代之
y =我< 1 e-8;
这将返回一个逻辑(真|假)。如果你想要一个双(1 | 0),
y =双(< 1 e-8);
注意,这并不确定零交叉。它仅仅是不到1 e-8标识值。

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!