Difference between revisions of "FM Homework Assignment Questions"
(→Question 5) |
(→Question 3) |
||
Line 29: | Line 29: | ||
:'''Answer 3:''' You can enter and perform operations on complex numbers in Matlab very easily, just like real numbers.bYou can use i or j to represent sqrt(-1). I suggest not using i or j as a variable in your code, as this could lead to confusion with sqrt(-1). So, as an example try entering the following to see how it works: | :'''Answer 3:''' You can enter and perform operations on complex numbers in Matlab very easily, just like real numbers.bYou can use i or j to represent sqrt(-1). I suggest not using i or j as a variable in your code, as this could lead to confusion with sqrt(-1). So, as an example try entering the following to see how it works: | ||
− | >> a = 1+2i | + | :>> a = 1+2i |
− | >> b = 2+3j | + | :>> b = 2+3j |
− | >> c = ones(10,1); | + | :>> c = ones(10,1); |
− | >> d = a*c | + | :>> d = a*c |
− | >> e = exp(i*c) | + | :>> e = exp(i*c) |
− | + | ||
===Question 4=== | ===Question 4=== |
Revision as of 23:40, 11 April 2008
Contents
Introduction
Please feel free to use this page like a message board to ask any questions you like about the FM homework assignment.
Questions and Answers (Q&A)
Question 1
I have been trying for days, using the bilinear transform (matlab: bilinear) to convert the filters from continuous time domain to discrete time domain. For the butterworth filter, I even used the butterworth function provided by matlab (matlab: butter). Nothing worked, the frequency responses always showed a difference of about a factor of 10. I then stumbled across another discretisation method from the Control Systems Toolbox: c2d. For the first two filters, I simply used a bilinear tustin approximation ( Hn = c2d(Hn_a,ts,'tustin') ) and for the third filter, I used the bilinear tustin approximation with prewarping, as with higher frequencies, the prewarping effect is more visible ( H3=c2d(H3_a,ts,'prewarp',omega_c3) ) The approximation using a zero order hold also works, but the prewarp is more accurate. My question now: Is it mandatory that we use the bilinear() function, or is the above described method okay?
- Answer 1: <blah blah>
Question 2
Is the equation for the reference signal at the top of page 3 of the assignment? (v(t) = ...) I'm trying to integrate to get phi(t) but the integral of the message signal is always zero.
- >> syms t;
- >> sin_m_of_t = sin(2*pi*2000*t);
- >> int(sin_m_of_t, 0, 277775)
- ans = 0
so that implies that for the sinusoidal input v(t) = A + n_c(t) + j*n_s(t)? It is just a sine wave though, so I suppose it does make sense that its integral over a whole number multiples of 2*pi is zero. Also, is my upper limit on the integral correct? ( = delta * (number of samples - 1))
- Answer 2: <blah blah>
Question 3
How do we do complex numbers in Matlab?
- Answer 3: You can enter and perform operations on complex numbers in Matlab very easily, just like real numbers.bYou can use i or j to represent sqrt(-1). I suggest not using i or j as a variable in your code, as this could lead to confusion with sqrt(-1). So, as an example try entering the following to see how it works:
- >> a = 1+2i
- >> b = 2+3j
- >> c = ones(10,1);
- >> d = a*c
- >> e = exp(i*c)
Question 4
The assignment seems a little ambiguous, as the specs just indicate that the maximum absolute value of the message signal must be less than 1.
- Answer 4: You are right. In fact, the random message signal should be normalised so that its maximum absolute value is always 1. Therefore please do this in your simulation.
Question 5
I am a little confused about which bilinear transform to use... is it "[numd,dend] = bilinear(num,den,fs)" if so i am not sure what the num and den parameters should be.
- Answer 5:
Question 6
I'm having difficulty trying to set the seed of the Gaussian random number generator at the begginning of my simulation. I take it you need to declare a variable such that:
- >> seed = "some prime number";
...then go into the source block parameter for Random Number and change the inital seed parameter to "seed" and play around with seed values from your code as the assignment suggests (if you want to). But the problem I'm having is matlab won't let me change this parameter.. in fact I can't even change "mean" or "variance" not that I need but how can I gain access to change this?
Extra Advice
- Do not use symbolic variables in matlab for the assignment! You should only use symbolic variables in Matlab when you want to simplify an algebraic mathematical expression, such as factorising a polynomial, or finding the mathematical integral or derivative. This is usually not helpful for a simulation. In a simulation you should be using arrays of numbers. These numbers can either be real or complex. All integration and differentiation should be done numerically, e.g. we approximate integration by summing. Summing should be done just as if you were programming in some other language like C, i.e. use a loop. Differentiation is approximated by taking differences. Again, this is likely to be done in a loop.