Building a matrix using while loops? (MATLAB)

  1. Building a matrix using "while" loops? (MATLAB)

    Hello

    Here is my code:

    Code (Text):

    i = 1;
    j = 1;
    S = zeros(11,11);

    while i < 12
        while j < 12
            S(i,j) = Test1(a(i,j),b(i,j),c(i,j));
            j = j + 1;
        end
        i = i + 1;
    end
     
    a,b,c are all 11x11 matrices and Test1 is a function m-file which outputs a number. (I have tested it for all the values that a(i,j), b(i,j) and c(i,j) take).

    My code is only calculating the first row of S, ie. S(2,1) = 0 still. I don't know why the program is ending without adding 1 onto i and repeating the loop, I can only imagine the "while" loop is the wrong way of going about this?

    Thanks for any help,

    Mike
     
  2. jcsd
  3. Mark44

    Staff: Mentor

    Re: Building a matrix using "while" loops? (MATLAB)

    A better choice is a for loop for each of your loops.
    Code (Text):

    for i=1:11
      for j = 1:11
         %% loop body
      end
    end
     
    You can do what you're doing with while loops, but they are in a sense more primitive control structures, so you have to do more of the work in your code. I think what might be happening is that after the inner loop has gone through a complete set of iterations, and i is now 2, you still have the last value of j (=12) in your inner loop. A fix for this problem might be like so:
    Code (Text):

    while i < 12
        j = 1   %% added this line
        while j < 12
            S(i,j) = Test1(a(i,j),b(i,j),c(i,j));
            j = j + 1;
        end
        i = i + 1;
    end
     
     
Know someone interested in this topic? Share a link to this question via email, Google+, Twitter, or Facebook