数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 746|回复: 19

[C51] 许老师电桥代码里最关键却最无法理解的部分

[复制链接]
发表于 2025-6-22 11:11:25 | 显示全部楼层 |阅读模式
就是abc这三个变量的计算公式,后面的计算都是从这三个变量得来的:
  1.   a = (+(1.0 * v[2] * v[2] + 1.0 * v[3] * v[3]) * ((ga[Vz[4]] / ga[Vz[5]]) / (dwR[rng] * (1 + gr / 10000.0)))) + (+(1.0 * v[2] * v[2] + 1.0 * v[3] * v[3]) * ((ga[Vz[4]] / ga[Vz[5]]) / (dwR[rng] * (1 + gr / 10000.0)))) * G / 10000; //增益补偿
  2.   b = (-(1.0 * v[0] * v[2] + 1.0 * v[1] * v[3])) * cJD - (-(1.0 * v[2] * v[1] - 1.0 * v[0] * v[3])) * JD; //相位补偿
  3.   c = (-(1.0 * v[0] * v[2] + 1.0 * v[1] * v[3])) * JD + (-(1.0 * v[2] * v[1] - 1.0 * v[0] * v[3])) * cJD; //相位补偿  
复制代码
比如对于b中为什么要减去(-(1.0 * v[2] * v[1] - 1.0 * v[0] * v[3])) * JD 问AI AI是这样解释的,但是还是看不明白呀,b和c后面为什么要减去那一长串内容有大神能通俗的解释一下吗?






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
 楼主| 发表于 2025-6-22 11:16:27 | 显示全部楼层
许老师早期版本的代码里并没有这么复杂:
  1.   a = +( 1.0*v[2]*v[2] + 1.0*v[3]*v[3] );
  2.   b = -( 1.0*v[0]*v[2] + 1.0*v[1]*v[3] );
  3.   c = -( 1.0*v[2]*v[1] - 1.0*v[0]*v[3] );
  4.   a *= ga[g[0]] / ga[g[2]];
复制代码
回复 支持 反对

举报

发表于 2025-6-22 11:57:47 | 显示全部楼层
直接请教许老师、呼叫许老师吧!
回复 支持 反对

举报

 楼主| 发表于 2025-6-22 12:39:19 | 显示全部楼层
猪小呆 发表于 2025-6-22 11:16
许老师早期版本的代码里并没有这么复杂:
早期版本的代码跟许老师的原理公式是一一对应的:
a=c*c+d*d
b=ac+bd
c=bc-ad



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

举报

 楼主| 发表于 2025-6-22 12:41:56 | 显示全部楼层
猪小呆 发表于 2025-6-22 12:39
早期版本的代码跟许老师的原理公式是一一对应的:
a=c*c+d*d
b=ac+bd

现在的版本就太复杂看不懂了,有能看懂的坛友给讲讲呗?完整源代码见上个帖子:
https://www.mydigit.cn/thread-528638-1-1.html
回复 支持 反对

举报

发表于 2025-6-22 12:51:01 | 显示全部楼层
不敢吭声...


二○二五年六月二十二日
回复 支持 反对

举报

发表于 2025-6-22 13:03:12 | 显示全部楼层
看别人的代码是有一定的难度的
回复 支持 反对

举报

 楼主| 发表于 2025-6-22 13:54:31 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

举报

 楼主| 发表于 2025-6-22 14:24:09 | 显示全部楼层

看了CHATGPT的解释,似乎有点明白了,是不是类似下面这个图,因为相位有误差,导致真实的实部和虚部也会有误差,而减去的这部分就是对应的相位误差投影在实部或虚部上的误差值,也就是下图中两个黄线之间的部分:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
回复 支持 反对

举报

发表于 2025-6-22 17:29:26 | 显示全部楼层
本帖最后由 kpj001 于 2025-6-22 17:32 编辑

恭喜你终于挖到了那一开始就应该知道的:缺三门课 普通物理 高数 低频,也就是大学理科的基础课。当然也没必要去啃,大概知道点复数概念就够用了,别人的计算公式接着用即可。不过想知道为什么,那该补的课还得补。
回复 支持 反对

举报

发表于 2025-6-22 20:43:27 | 显示全部楼层
直接拿来套用就可以了,完全搞明白还要请原作者
回复 支持 反对

举报

发表于 2025-6-24 15:42:53 | 显示全部楼层
估计要恶补数学
回复 支持 反对

举报

发表于 2025-6-24 16:58:54 | 显示全部楼层
kpj001 发表于 2025-6-22 17:29
恭喜你终于挖到了那一开始就应该知道的:缺三门课 普通物理 高数 低频,也就是大学理科的基础课。当然也没 ...

这个也是有些人学单片机,尤其是C语言学历低的瓶颈。
回复 支持 反对

举报

发表于 2025-7-2 09:40:54 | 显示全部楼层
kpj001 发表于 2025-6-22 17:29
恭喜你终于挖到了那一开始就应该知道的:缺三门课 普通物理 高数 低频,也就是大学理科的基础课。当然也没 ...

复数好像是高中的知识吧,不太记得了
回复 支持 反对

举报

发表于 2025-7-2 13:44:58 来自手机浏览器 | 显示全部楼层
你的C语言是什么时候教的?
回复 支持 反对

举报

 楼主| 发表于 2025-7-2 13:56:49 | 显示全部楼层
梅花一党 发表于 2025-7-2 13:44
你的C语言是什么时候教的?

我并没有系统学过C语言,我认为不需要刻意去学,直接看代码,遇到不懂的地方就百度,代码搞明白了C语言也就会用了
回复 支持 反对

举报

 楼主| 发表于 2025-7-2 14:07:04 | 显示全部楼层
梅花一党 发表于 2025-7-2 13:44
你的C语言是什么时候教的?

包括学单片机也是一样,我没有完整的学过任何单片机的课程,STM32的视频教程看了几节就看不下去了,51单片机的教程一个都没看过。我学单片机的方式就是直接看代码,遇到不懂的地方再查资料,哪里不懂查哪里就行了
回复 支持 反对

举报

发表于 2025-7-2 16:15:43 来自手机浏览器 | 显示全部楼层
猪小呆 发表于 2025-7-2 14:07
包括学单片机也是一样,我没有完整的学过任何单片机的课程,STM32的视频教程看了几节就看不下去了,51单 ...

哈哈,属于超级聪明的,

我理解,做什么东西无所谓,无论是电子钟,还是LRC,  毕竟要尊重C老板,哈哈
回复 支持 反对

举报

发表于 2025-7-2 16:26:57 | 显示全部楼层
猪小呆 发表于 2025-7-2 14:07
包括学单片机也是一样,我没有完整的学过任何单片机的课程,STM32的视频教程看了几节就看不下去了,51单 ...

厉害,一个点灯就是记不住,怎么写也写不出来。我不是读书的料
回复 支持 反对

举报

 楼主| 发表于 2025-7-2 16:45:30 | 显示全部楼层
pxhxkij 发表于 2025-7-2 16:26
厉害,一个点灯就是记不住,怎么写也写不出来。我不是读书的料 ...

不需要记,要理解它的本质,本质就是通过设置某个寄存器里的某一位为0或者1来实现控制某个引脚输出高低电平,单片机的所有功能都是通过配置那些寄存器来实现的,理解了这一点剩下的就是查手册了
回复 支持 反对

举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-8-14 04:26 , Processed in 0.093601 second(s), 7 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表