Engineer ideological training from scratch 1. engineer from scratch
The purpose of writing this series of blogs:
The blogger is a graduate student to be enrolled. His Teaching and Research Section has no specific research direction. He is working on a project and will study on a temporary basis. The instructor has a set of training systems. After a period of training, he feels very rewarding, but he will forget it after a long time. Therefore, he decided to spend time writing a blog record to facilitate future review. By reading this series of training systems, you will be able to guide your future study from an inexperienced student party with the idea of some engineers. The training involves audio, video, and communication. All the questions mentioned are closely related to the teaching materials of undergraduate majors, which can improve the knowledge activation. The problem itself is not difficult. It is mainly to cultivate the ideas of engineers. Another purpose of writing this blog is to improve the writing level of your technical documents. At the same time, I want to talk about some loopholes in the analysis, but I am willing to make progress with you.
First, the audio time domain training: (you need cooledit, matlab (used to design the filter) software and C language programming skills)
First, let's think about how to express the simplest continuous signal of a sine wave:
Y = AM * sin (wt + PHI)
We sample this signal, set the signal frequency to f0, and the sampling frequency to fs, so the signal after sampling is:
Y = AM * sin (2 * pi * f0 * n/fs + PHI)
The problem here is how we use c to generate an infinitely long sine signal with the smallest error. We can use c's library function, but the problem here is that pi is an irrational number, when n increases infinitely, the error will accumulate. Another problem is how we can increase n infinitely. Here n cannot be infinitely added for any data type in C language, so how can we generate a signal with the smallest error and an infinite length?
Here we want:
1. generate an infinitely long sine wave signal with a usage of fs = 8000Hz and a signal frequency of f0 = 330Hz
2. Change the signal frequency in 1 to 330.3Hz
3. generate an infinitely long square wave signal with a usage of fs = 8000Hz and a signal frequency of f0 = 330Hz
4. generate an infinitely long triangle wave signal with a usage of fs = 8000Hz and a signal frequency of f0 = 330Hz
The last three questions are exactly the same as those in question 1. I will give the answer to the question in the next blog soon and give the next question. (Signals produced by C can be written into text files. Use cooledit to view the frequency and pay attention to the fft resolution. The problem is how to minimize the error !)