- 博客(29)
- 收藏
- 关注

原创 FFT (Fast Fourier Transform) 与 DFT (Discrete Fourier Transform)
FFT 是一种如雷贯耳的快速算法,应用范围及其广泛,就不多说了。不过 DFT 很多人并不是很清楚,只知道 DFT 比 FFT 效率低,速度慢。实际上,在很多应用场合下,DFT 反而会比 FFT 效率高很多。 首先,回顾一下复数的特性: V = R + jI = M*(R/M + j I/M) = M*(cos(A) + j sin(A)) = M*exp(j A
2008-07-09 20:50:00
3005
1

原创 软件滤波方法浅谈 (2)
使用 FIR 滤波有很多优点,比如,总是可以通过先构造滤波器的幅频特性,然后逆变换(比如利用Inverse Fourier Transform) 得到离散的冲击响应序列。不过问题是,如果FIR 冲击响应不收敛,或收敛时间很长,这就需要大量的运算。即便是收敛快的,简单的 sinc 函数,为了保证效果,至少需要 16 点以上的序列。为减少运算量,迭代就会被考虑,也就是说,滤波器的离散公式为:
2008-07-08 21:30:00
2412
7
原创 中断驱动多任务--- 单片机(MCU) 下的一种软件设计结构
mcu由于内部资源的限制,软件设计有其特殊性,程序一般没有复杂的算法以及数据结构,代码量也不大, 通常不会使用 OS (Operating System), 因为对于一个只有 若干K ROM, 一百多byte RAM 的 mcu 来说,一个简单OS 也会吃掉大部分的资源。 对于无 os 的系统,流行的设计是主程序(主循环 ) + (定时)中断,这种结构虽然符合自然想法,不过却有很多不利
2008-08-01 22:06:00
5801
3
原创 动态可订制属性的 PropertyGrid
在VB6, VC++, C#.net 里都可以见到一个属性设计器,用来编辑修改 object 的属性。C# 下提供了一个属性设计器 PropertyGrid, 其使用极其简单,只要 grid.SelectedObject = myOjbect; 就可以把myOjbect 的所有属性显示出来。不过很多时候我们不希望如此,因为欠缺一种灵活性。我希望可以自由的控制需要编辑的内
2008-07-31 22:45:00
12083
1
原创 C# 下控制 WebBrower 以及 HtmlDocument
C# 下带有 WebBrowser 控件,可以用 html 来完成图文混排,报表显示和打印,比前面提供的 vc++ 下使用 IHTMLDocument 容易很多。 下面是一个可以本地生成 html 文件的class: public CHtmlDocumentBase(WebBrowser browser, int bufferSize)
2008-07-30 00:01:00
4091
原创 C# 下用 xml 导入导出数据
C# 下导入导出数据比在 VC++ 下容易了很多,基本数据类型 int, float 可以自动 box, unbox, 不需要像 c++ 下得考虑封装基本数据的问题。 public static bool LoadObjects(string fileName, CCollectionBase objects, string type, ref strin
2008-07-29 23:55:00
1601
原创 VC++ 下使用 xml 文件导入导出数据
XML (eXtensible Markup Language) 是一种简单的数据存储语言,使用一系列简单的标记描述数据,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。更重要的是,xml 可以描述非常复杂的数据结构,比如树状结构。 为了建立一个通用,易于扩展,易于使用的数据导入导出应用,首先得定义一些数据类型用于存储 int, float, str
2008-07-29 21:57:00
2007
2
原创 Hashtable 容器类
Hash算法是一种把任意长度的数据映射转换为固定长度数据的算法,一个典型的应用就是把字符串映射到一个索引值上,这样就把字符串的查找问题变成了查表,极大的提高了性能。hash 具体算法就不介绍了,这里说说应用, 对于一个大中型的项目来说,容器类可以说是必不可少的,Array, LinkList, Que, Stack 应用最广,不过hashtable 我感觉很多人使用较少。很多场合下,使用字符名称表
2008-07-23 20:44:00
1172
原创 MFC 中可订制的 ListView 以及 C# 中可编辑的 ListView
ListView 是一个用途广泛的 control, 在MFC 里的 listView 很平淡,而C#.net 中则增强了很多,可以在设计时设定各个 cell字体,前景/背景颜色。好在 mfc 下control 的自控制性更强,可以做到 C# listView 能做到的一切,甚至更多。下面一个 listView class 是很早以前从 codeproject.com 下载(不好意思,忘了作者是谁
2008-07-18 22:16:00
2370
1
原创 C#: 监测 USB plugin and plugout
It is useful to enum USB ports or connect to a USB device automatically while a USB device is plugged-in. I did lots of research to figure out how to make it work. Hope this can help you.
2008-07-16 21:29:00
2130
原创 一个嗅探 window 系统TCP/IP 数据包的 Raw Socket class
网络嗅探器 sniffer 很多,不过自己做的有很多好处。window2000, XP 支持 raw socket,可以用 raw socket 构造一些特殊用途的工具. #include #include "winsock2.h"#include "IPHeader.h" class CRawSocket { SOCKET
2008-07-09 22:18:00
2257
1
原创 VB 下 Post 中文编码的 http request
这是以前的一个机器人程序, 用来直接向 http server 提交中文的信息。程序使用了两个特别的控件:inet 与 web browser。 初始化:Private Sub Form_Load() objInet.Protocol = icHTTP objInet.RequestTimeout = 12 web.Navigate2 "about:blank
2008-07-09 21:42:00
3156
原创 过滤数字载波的一种方法
看到一个电路中的 CD4098, 让我想起以前做过的一个未完成的项目,自学习的红外遥控器。当时一个问题是如何低成本的滤除 38K 的调制波得到编码波。设计了一些低通滤波器,效果都不理想。后无意中看到 CD4098 的可重触发特性, 豁然开朗。此特性为:脉冲会把触发器重新置位,直至脉冲间隔大于触发器延时设置。因而,38K 的调制波输入到设置为可重触发的 CD4098, 那么输出就是 编码波 加上一个
2008-07-08 00:07:00
1645
原创 偷梁换柱 --- 管理多个应用程序的壳程序
以前我们每一个设备有一个管理软件,客户总是为此抱怨,特别是做系统集成的大客户。现在我几乎把所有的管理软件软件用 c#.net 重新写一遍,目的是让系统更强壮,更容易维护,更容易扩展。所有的文件采用 xml 格式,包括设备设置文件,每个设备生成一个 dll, 由一个与设备无关的shell 查询设备设置文件调入。如果每个dll 产生一个 Mdi Container, 同时把 shell 关闭,
2008-07-07 22:49:00
1078
原创 判断一个点在三角形之内
这个问题曾在 csdn 以及 21icbbs 提出过,我已找不到过去的连接。这个问题首先是判据,有网友提出判断点在三角形线段左右,这个问题已被我证明与我提出的判据最终的结果一致,尽管我是用矢量来推导,因为矢量有方向性,故而存在左右之分。我的判据是:如果 X 一个点在 A, B, C 三点形成的三角形内,则 X 与 ABC 之间的夹角XA, XB, XC 都小于 180 度;如果有一个角为180,则
2008-07-07 00:42:00
4246
1
原创 exp 函数的数值计算方法
这个问题是21icbbs 上的一个网友提出的,我第一反应就是迭代。在很多场合下,比如计算热电流thermal current,或是其他一些使用如下公式的应用: y(t) = K * (1 - exp(-t / T))) (1) y(t) = K
2008-07-03 21:18:00
25045
原创 关于c/c++ 中的函数指针
在 c 使用函数指针与 c++ 虚拟函数不同,尽管 virtual function 的本质也是函数指针。在用 c 设计时,尽管没有抽象设计,但通过使用函数指针留出 call back 接口,就可以把不同的动作从代码中剥离出去,从而使得代码更加通用。一个例子,如果某个查找程序中需要一个排序, 而有不同的排序算法以适应不同的场合。为了保证查找程序的通用性,必须假设程序对外部环境一无所知,这时可以使用
2008-07-02 03:11:00
1450
原创 软件滤波方法浅谈 (1)
21icbb 上的程序匠人总结了10种软件滤波方法,简单实用,看得出是匠人自己对实际应用的归纳升华。不过如果能从理论角度分析一下, 更易于理解,因为 10 种方法大多数可以归结为一种做法:有限冲击响应滤波器 (FIR Filter) ,或者通俗的说是程序匠人所提到的“加权平均滤波器“. 滤波器可以分为两种:IIR (Infinite Impulse Response) and
2008-07-02 01:27:00
3789
1
原创 枚举 window 系统串口的几种方法
mfc 下: CString s; for (int i=1; ibool CSerialPort::CheckCommPort(LPCSTR commPortName) { COMMCONFIG cc; DWORD dwCCSize = sizeof(cc); return ::GetDefaultCommConfig(commPortName,
2008-07-01 23:47:00
2908
1
原创 Delta phase angle between two sinusoidal waves with different frequencies 不同频率下的相角差
As I mentioned before, it is easy to calculate the delta phase angle betweeen two sinusoidal waves with the same frequency when DFT is involved. The problem occurs when these two waves have dif
2008-07-01 21:58:00
1159
原创 Generic Chart Control in C# 一个通用的图表控件
这个control 是把原来 mfc 下的图形显示class 移植到 c# 下,做成一个更通用的 usercontrol. 坐标变换 class: using System;using System.Collections.Generic;using System.ComponentModel;using System.Text;using System.Drawing;
2008-07-01 21:04:00
1697
原创 代理服务器 (proxy) 的使用
代理服务器的使用 (proxy) 关于 proxy 的用处,我就不多说了,大家心照不宣。如果使用VB6 的 Inet Control, proxy 的设置则极为简单: objInet.AccessType = icNamedProxy objInet.Proxy = Trim(proxyAddress.Text) o
2008-06-18 23:04:00
1572
原创 在 mfc 中控制 web browser
在很多 application 中,我使用了 browser + html. 好处很多,比如完成复杂的图文显示,预览,打印等等功能。在 VB6 或 C# 中通过 html Document 来控制browser 很简单,但在 mfc 中稍微有些复杂,于是我封装了 IHtmelDocument2 接口,用 exception 来捕获错误,这样,在 mfc 中使用IHtmelDocument2
2008-06-18 22:18:00
1878
原创 一个 VBA for Excel 的DFT 类用以分析离线数据
我的很多项目里都要使用DFT/FFT ,所以有各类的程序,如assembly, C/C++, C# 等等。当客户需要我帮助分析离线数据时,我发现专门用 C++ 或 C# 做各种不同的程序太耗时间和精力。最快最简单的分析方法是用 matlab, 不过客户并不懂matlab, 也没有matlab。另一个选择就是excel, 把数据装入excel,用vba 处理完之后再chart 上显示出
2008-06-16 23:08:00
1672
原创 PID算法的实现
PID 算法是一种应用及其广泛的控制方法。对于一个线性系统,PID 参数可以通过指定闭环极点的方法获得。在实际应用中,由于信号噪声,微分经常会带来不必要的干扰,因而,数字控制中经常会舍弃微分项。 The PID equation in time domain is described as the following: y(t) = Kp* x(t) + Ki*Inte
2008-06-16 21:47:00
3183
1
原创 Phase angle calculation with high accuracy 高精度相角计算
Two schemes for the phase angle/frequency calculation are implemented in my one of projects. One scheme is the zero-crossing in the time domain. Another is based on DFT in the frequency domain. The
2008-06-16 00:05:00
1472
原创 c#.net 通过 c++.net 使用 windows API 及unmanaged code
为了跟随技术的潮流,我在一个windows application项目中放弃了 mfc,转入 c++.net winform. 虽然winform 运行速度无法与 mfc 相提并论,但设计效率大大提高,特别是有了自定义 control, 代码量强度大大降低, 而且很多底层代码 (unmanaged) 可以直接移植使用。当我进一步跳到 c# 是, 底层代码就有了问题,c# 没有 unmanaged
2008-06-13 10:37:00
1308
原创 无(速度)传感器交流异步电机 (sensorless vector control for induction machine) 的闭环矢量控制 (1)
这是一个很早以前的项目,我首先用 matlab/simulink 作仿真,然后用 Analog Device 的 DSP 做的程序。 以下是 induction machine 模型的电流微分计算: function X=DerCurrent(U) global C S invL Rs Rr Ls Lm Lr T ; Ids=U(4) ; Iqs=U(5) ; Idr=
2008-06-13 01:13:00
2732
原创 我一直想把自己的一些技术心得保留下来,以便以后可以看看自己的历程。
现在做起, 犹未为晚。我做过很多的项目,从硬件设计到软件编程, 从算法到仿真,可惜很多没有保留下来,要么一些涉及商业利益不允许被发表. I prefer typing english in some articles instead of typing chinese because it is too slow to type chinese characters.
2008-06-13 00:45:00
920
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人