下面是gpt生成的代码

#include <iostream>
#include <cmath>using namespace std;class SVPWM {private:float dcBusVoltage;float loVoltage; float hiVoltage;float freq;float period;float a;float b;float c;public:SVPWM(float _dcBusVoltage, float _freq) {dcBusVoltage = _dcBusVoltage;freq = _freq;period = 1.0f/freq;loVoltage = 0.5f*dcBusVoltage;hiVoltage = dcBusVoltage - loVoltage;}void calc(float v1, float v2, float v3, float &dutyA, float &dutyB, float &dutyC) {float sinA = sin(2.0f*3.14159f*freq*a);float sinB = sin(2.0f*3.14159f*freq*b);float sinC = sin(2.0f*3.14159f*freq*c);float maxSin = max(sinA, max(sinB, sinC));float angle = asin(maxSin);float t1, t2, t3;if (maxSin == sinA) {t1 = angle/(2.0f*3.14159f*freq);t2 = (3.0f*3.14159f/2.0f - angle)/(2.0f*3.14159f*freq);t3 = (3.0f*3.14159f/2.0f + angle)/(2.0f*3.14159f*freq);dutyA = hiVoltage/dcBusVoltage;dutyB = ((loVoltage*sinB)/(dcBusVoltage*sinA));dutyC = ((loVoltage*sinC)/(dcBusVoltage*sinA));} else if (maxSin == sinB) {t1 = (3.0f*3.14159f/2.0f - angle)/(2.0f*3.14159f*freq);t2 = angle/(2.0f*3.14159f*freq);t3 = (3.0f*3.14159f/2.0f + angle)/(2.0f*3.14159f*freq);dutyA = ((loVoltage*sinA)/(dcBusVoltage*sinB));dutyB = hiVoltage/dcBusVoltage;dutyC = ((loVoltage*sinC)/(dcBusVoltage*sinB));} else {t1 = (3.0f*3.14159f/2.0f + angle)/(2.0f*3.14159f*freq);t2 = (3.0f*3.14159f/2.0f - angle)/(2.0f*3.14159f*freq);t3 = angle/(2.0f*3.14159f*freq);dutyA = ((loVoltage*sinA)/(dcBusVoltage*sinC));dutyB = ((loVoltage*sinB)/(dcBusVoltage*sinC));dutyC = hiVoltage/dcBusVoltage;}float minDuty = min(dutyA, min(dutyB, dutyC));if (minDuty < 0) {dutyA -= minDuty;dutyB -= minDuty;dutyC -= minDuty;}if (dutyA > 1.0f) {dutyA = 1.0f;}if (dutyB > 1.0f) {dutyB = 1.0f;}if (dutyC > 1.0f) {dutyC = 1.0f;}if ((t2 - t1) > period/2.0f) {dutyA = 0;}if ((t3 - t2) > period/2.0f) {dutyB = 0;}if ((period - t3 + t1) > period/2.0f) {dutyC = 0;}}void setPhase(float _a, float _b, float _c) {a = _a;b = _b;c = _c;}
};class AntiFlicker {private:float dcBusVoltage;float freq;float period;float threshold;bool lastUp;bool lastDown;int lastSign;int count;public:AntiFlicker(float _dcBusVoltage, float _freq, float _threshold) {dcBusVoltage = _dcBusVoltage;freq = _freq;period = 1.0f/freq;threshold = _threshold;lastUp = false;lastDown = false;count = 0;}bool check(float voltage) {if (voltage <= threshold) {if (lastUp) {count++;}lastUp = false;lastSign = -1;} else {if (lastDown) {count++;}lastDown = false;lastSign = 1;}if (count >= 3) {count = 0;return true;}return false;}float filter(float voltage) {float filteredVoltage = voltage;if (check(voltage)) {filteredVoltage = dcBusVoltage*lastSign;}return filteredVoltage;}
};int main() {SVPWM svpwm(12.0f, 10.0f);AntiFlicker antiFlicker(12.0f, 10.0f, 0.1f);float dutyA, dutyB, dutyC, filteredVoltage;float a = 0.0f;float b = 2.0f/3.0f;float c = -2.0f/3.0f;while (true) {filteredVoltage = antiFlicker.filter(2.0f*sin(2.0f*3.14159f*10.0f*a));svpwm.setPhase(a, b, c);svpwm.calc(0.0f, 0.0f, filteredVoltage, dutyA, dutyB, dutyC);cout << "Duty A: " << dutyA << ", Duty B: " << dutyB << ", Duty C: " << dutyC << endl;a += 0.001f;b += 0.001f;c += 0.001f;if (a > 1.0f) {a -= 1.0f;}if (b > 1.0f) {b -= 1.0f;}if (c > 1.0f) {c -= 1.0f;}}return 0;
}

c++实现svpwm并带防飞车功能相关推荐

  1. 带防夹功能的升降器原理_全系标配行车自动落锁功能,全新凯美瑞表现分析

    全新一代凯美瑞延续了"丰巢"(TNGA)的造车理念,官方售价为17.98-27.98万元,推出三种动力组合,下面就随小编来看看这款车的表现怎么样. 外观方面,全新一代凯美瑞采用家族 ...

  2. 带防夹功能的升降器原理_桌面光污染必不可少——骨伽Bunker RGB鼠标线夹

    前言 每个游戏宅男的梦想就是有一台会在晚上闪闪发光的主机,还有酷炫的不行的RGB灯效的外设.打造一个RGB桌面需要很多,一台带RGB风扇内存的主机,一个会发出RGB灯光的键盘和鼠标,你以为这些就够了吗 ...

  3. 真正带防红的短网址源码

    最近想搞一个带防红的短网址,用的是自己域名缩短网址,带防红功能. 测试了很多源码都不可以,防红效果没有,最后自己修改了一下,完工. 源码特点: 1.没后台,上传后即可使用: 2.使用自己网址进行缩短, ...

  4. 中颖电动车控制器量产方案 中颖电动车控制器量产方案,霍尔FOC算法,霍尔角度自学习,防飞车,堵转保护等功能

    中颖电动车控制器量产方案 中颖电动车控制器量产方案,霍尔FOC算法,霍尔角度自学习,防飞车,堵转保护等功能 现有:34100

  5. mysql防注入 php_PHP使用PDO实现mysql防注入功能详解

    本文实例讲述了PHP使用PDO实现mysql防注入功能.分享给大家供大家参考,具体如下: 1.什么是注入攻击 例如下例: 前端有个提交表格: 姓名: 密码: 后台的处理如下: $username=$_ ...

  6. XC3072锂电池充电IC(耐高压,带OVP,带防反接)

    XC3072是一款完整的单节锂电池充电器,自带OVP,VIN输入耐压30V ,BAT耐压30V,带电池防反接功能,兼容大小500-600mA充电电流,采用涓流,恒流,恒压控制,SOT23-5封装与较少 ...

  7. 超小体积高灵敏度单按键单通道1路触摸触控检测IC-VKD233DS/HS DFN6-外接电容调节灵敏度,带16S自动复位功能,适用于超小型产品,如手环、智能手表、蓝牙耳机等等

    型号:VKD233DS/HS 品牌:永嘉微电/VINKA 封装:DFN6 年份:新年份 概述:VKD233DS/HS  DFN6具有1个触摸按键,可用来检测外部触摸按键上人手的触摸动作.该芯片具有较高 ...

  8. django自带的分页功能

    django自带的分页功能 django中自带的分页功能有缺陷,但是也是一种思路,所以在下做一个整理,方便以后使用,还有服务各位小伙伴. django视图部分的代码.(注释才是重点) from dja ...

  9. spring boot + redis 实现网站限流和接口防刷功能

    源码url: https://github.com/zhzhair/accesslimit-spring-boot.git 注解@AccessLimit 实现接口防刷功能,在方法上的注解参数优先于类上 ...

最新文章

  1. 【Manning新书】可解释人工智能: 构建可解释机器学习系统
  2. Linux开机详细流程
  3. 数据结构与算法—栈详解
  4. RuntimeError 之 : CUDA error: device-side assert triggered
  5. 英国如何推动分享经济的发展?
  6. Struts2学习总结(完整版)
  7. 数据结构实验之二叉树的建立与遍历
  8. 40岁,将站到哪里(转)
  9. vscode调试用的launch.json
  10. 计算机休眠唤醒后没声音,MacBook Pro从睡眠模式中唤醒后突然没有声音
  11. HTML---网络编程基础知识(2)
  12. Hello MySQL(四)——MySQL数据库创建实例
  13. 如何快速搭建自己的github.io博客
  14. 【CTF】记录一次CTF比赛的Writeup(附题目下载地址)
  15. 在这个大数据时代,如何保护好自己的隐私?
  16. 乖乖不得了,这款数字机器人竟然能够识别发票扫描信息!
  17. JS获取本机IP的工具类
  18. 计算机组装部zho,PowerPC汇编实现BES Ⅲ数据获取读出系统机箱级数据组装
  19. Google Doodle — 谷歌的插画之道
  20. aws SQS 队列管理

热门文章

  1. 退出图标html css 实现,用一个div画出关闭图标
  2. 写一段51单片机的避障小车代码
  3. 手把手教你搭建外网可访问的应用~
  4. Appium工作原理简介
  5. 让chatgpt给我写影评,写《功夫》影评,不少于500字,大家觉得水平如何。
  6. sqlserver、mysql、oracle默认端口号
  7. linux ps 查看进程命令
  8. 在一个v-for循环里面显示不同的图标
  9. 为什么有的公司留不住 90 后新员工?
  10. 多去阅读思维训练类的书籍(转载)