Matlab Homework Help!!! Lost! - Programmers Heaven

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

Welcome to the new platform of Programmer's Heaven! We apologize for the inconvenience caused, if you visited us from a broken link of the previous version. The main reason to move to a new platform is to provide more effective and collaborative experience to you all. Please feel free to experience the new platform and use its exciting features. Contact us for any issue that you need to get clarified. We are more than happy to help you.

Matlab Homework Help!!! Lost!

Matlab12Matlab12 Posts: 3Member
Hey, I have been working on MATLAB hw that consists of 10 questions for a week now. I have only figured out questions 1-8, and I have 9 and 10 left to do which are the challenging programming questions for me.

Here they are:

9. (1) Convert the following C code to MATLAB (a MATLAB script). Your MATLAB code needs to explicitly use MATLAB's for loop and MATLAB's if statement. The result of the code is that the array (vector) x contains the 7 elements: 4, 4, 6, 8, 10, 10, 10.

int x[ ]= {2, 4, 6, 8, 10, 12, 14};
int i;
for (i = 0 ; i < 7 ; i++)
{
if ( x[i] > 10 )
x[i] = 10;
else if ( x[i] <= 4)
x[i] = 4;
}


10. (1) Develop a MATLAB function named cexpint that takes a data vector and an integer representing a frequency as input and returns a numerical approximation of the integral of:

( 2 / ( T - 1 ) ) * data( t ) * exp( 2 * pi * f * t * i / ( T - 1 ) )

where T is the number of items in the data vector, f is the frequency received as input, i is the imaginary number sqrt(-1), and t is the independent variable. The integral is to be performed for values of t that go from 0 to T - 1, which corresponds to the data items stored in the data vector but with a shift of 1 (in other words, data(1) is the datum for t = 0 and data(T) is the datum for t = T - 1). Your function should use the built-in MATLAB function trapz() to perform the numerical integration. Test your function using the following code (script):

n = 1024;
times = linspace(0,2*pi,n+1);
data = 0.25 + cos(times) + 0.5*sin(4*times) - 0.75*cos(32*times);
power = [];
freqs = 2.^[0:(log(n)/log(2)-1)];
for f = freqs
power = [power abs(cexpint(data,f))];
end
subplot(2,1,1)
plot(times,data)
xlabel('Time')
ylabel('Data')
subplot(2,1,2)
bar([0:log(n)/log(2)-1],power)
xlabel('log_2(Frequency)')
ylabel('Power')

Verify that your function works (the script produces a bar graph of the magnitude of sine and cosine components in the data vector, eg. 1 at frequency=1, 0.5 at freq = 4, etc... It represents the frequency spectrum of the data vector and the script essentially produces the Fourier transform of that vector) then paste the code of your function M-file below.

If you can give me any help of any kind, any hints I would be much obliged.

Thanks!!
Sign In or Register to comment.