1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Matlab code

  1. Jul 14, 2013 #1
    1. The problem statement, all variables and given/known data

    Fourier coefficients: A_0=0, a_n=0, b_n=2/(n∏) ; period p=2

    2. Relevant equations

    Fourier series


    3. The attempt at a solution

    Attempt was not good enough!
     
  2. jcsd
  3. Jul 15, 2013 #2

    Simon Bridge

    User Avatar
    Science Advisor
    Homework Helper
    Gold Member
    2016 Award

    Welcome to PF;
    Were you supposed to write a matlab script to calculate a number of fourier coefficients?
    Please show us the attempt anyway - along with your reasoning.
    What was it about your attempt that was "not good enough"?
     
  4. Jul 15, 2013 #3

    SteamKing

    User Avatar
    Staff Emeritus
    Science Advisor
    Homework Helper

    Alas, the poster's attempt at posting a question wasn't good enough.
     
  5. Jul 15, 2013 #4
    jokes?????????

    I get it; that's a joke right?

    Very good streamking!!!!!!!!!!!!!!!!!!

    One must not lose their sense of humor, even in the mist of battle, very clever, but not good enough!!!!!!!!!!!!!!!!!!!


    Alas,



    %% I_A
    % BEGIN SOME FUNCTION AND VARIABLE DECLARATIONS
    syms x;
    length_of_k = 25; % Number of coefficients to calculate
    p = pi; % Function period
    y = sin(x); % Function
    x_test = -p : 1/25 : 2*p; % Original x values
    y_test = sin(x_test); % Original f(x)
    % END SOME FUNCTION

    % BEGIN COMPUTING FOURIER COEFFICIENTS
    % -- BEGIN NOTES --
    % Calculate : a_0, a_k, b_k with k > 0
    % a_0 = (1/p)*int(f(t), t, 0, p) -- Integral f(t) w.r.t. t from 0 to p
    % a_k = (2/p)*int(f(t)*cos((2*pi*k*t)/p), t, 0, p)
    % b_k = (2/p)*int(f(t)*sin((2*pi*k*t)/p), t, 0, p)
    % -- END NOTES --

    a_0 = (1/p)*int(y, x, 0, p); % Calculate as priming reed
    a_coeff = []; % Declaring null array
    b_coeff = []; % Declaring null array
    fprintf('Fourier Coefficient:\ta_0 ==> %0.2f\n', double(a_0))

    for k = 1 : length_of_k
    a_coeff = [a_coeff, (2/p)*int(x*cos(2*pi*k*x/p), x, 0, p)];
    b_coeff = [b_coeff, (2/p)*int(x*sin(2*pi*k*x/p), x, 0, p)];
    fprintf('Fourier Coefficient:\t');
    fprintf('a_%1.0f ==> %0.3f\t\t', k, double(a_coeff(k)));
    fprintf('b_%1.0f ==> %0.3f\n', k, double(b_coeff(k)));
    end
    % END COMPUTING FOURIER COEFFICIENTS

    % BEGIN GENERATING FOURIER TERMS
    fs_x = [];
    fs_a0_calc = (a_0/2);
    for i = 1 : length(x_test)
    a_calc = 0;
    b_calc = 0;
    for k = 1 : length_of_k
    a_calc = a_calc + a_coeff(k)*cos(k*x_test(i));
    b_calc = b_calc + b_coeff(k)*sin(k*x_test(i));
    end
    fs_x = [fs_x, fs_a0_calc + a_calc + b_calc];
    end
    % END GENERATING FOURIER TERMS

    % BEGIN PLOTS
    plot(x_test, y_test, 'b', x_test, fs_x, 'r'); % Plot the original function
    grid on; % Turn on grid
    % END PLOTS

    % BEGIN DEBUGGING CODE
    fprintf('Max of f(x) = %0.4f\n', max(y_test));
    fprintf('Min ox f(x) = %0.4f\n', min(y_test));
    fprintf('Max of FS[x] = %0.4f\n', max(double(fs_x)));
    fprintf('Min of FS[x] = %0.4f\n', min(double(fs_x)));
    % END DEBUGGING CODE
     
  6. Jul 15, 2013 #5

    Simon Bridge

    User Avatar
    Science Advisor
    Homework Helper
    Gold Member
    2016 Award

    You missed out the reasoning and why it was not "good enough".
     
  7. Jul 15, 2013 #6
    I will know more about that as I become better with matlab. There were requirements that I was not able to meet at this point and time, but I will become better and get to a point where I am comfortable with matlab. It will take time, but I will learn!!!!!!!!!!!!!!!!!!!!!
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?
Draft saved Draft deleted