前段时间电脑启动不了了,就重装了个系统。一直很懒,所以到现在还没装MATLAB,学自动化的没有MATLAB真的受不了,很多东西都不能写。
不过好在安装了VS2010,有因为一直觉得编程语言得学好一个,所以就复习复习C语言。至于之前雄心勃勃得想学会C++,QT,我觉得还是实在一些学学c语言吧。
时域频域的转换在MATLAB里面实在是太容易实现了,但是c语言就不是(对我来说)。没错,我想用c语言代替MATLAB做一些事情。
不过我遇到的麻烦很多,菜鸟总是很麻烦啊!
第一个问题是如何用c语言作图。(这是个大麻烦)
MATLAB只需要step,plot,stem等等一下子就画出来了,c语言做不到啊。上网查了一下,似乎只有TC才有作图功能,VS只好用什么MFC,GUI之类的。这和c++,QT倒是联系上了。总之觉得这部分会非常庞大,毫不犹豫的退缩了。
第二个问题就是复数。
之前被教材误导了,觉得一定有一个头文件之类的可以在c中使用复数。c++里面好像有,因为我看到VS有头文件complex,里面好多class。总之没找到方法。
回头一想觉得还是有办法的。
我用了两种方法。
方法1:用数组
用两个元素的数组就可以轻松的表示一个复数。
方法2:看了一下VS2010里面的头文件complex,注意这里没有“.h”,因为对类还不是很熟悉,所以就只注意了一下头文件的前面一部分,但是给了我很大的启发,这里面用的是typedef自定义一个像结构体的类型,比如
typedef complex{
float re;
float im;
}comp;
这样就可以用了。如
comp a;
a.re=2;
a.im=3;
即:a=2+i3
不过有问题就是,写出来的程序虽然能够编译,能够build,甚至能够运行,依然有问题。我在程序里面用scanf()初始化变量,但是输数据到一半的时候,电脑告诉我程序停止运行。
不用scanf()的时候,程序能够正常运行。
没查出是是什么原因。Need your help.