```Date: Wed, 8 Dec 2010 12:14:27 -0500 Reply-To: Zach Peery Sender: "SAS(r) Discussion" From: Zach Peery Subject: Simple Population Projections with PROC IML Hi All, I would like to multiply a 3x3 matrix with randomly generated values in the 9 elements by a 3*1 vector where each element represents the number of individuals in a particular age class (below denoted "PopulationVector_Initial"). Easy enough, but I would like to do this over and over, where the next step would be to multiply the orginal matrix by the product of the first multiplication - I've denoted this 3*1 vector "PopulationVectorT_1". I would then like to multiply the original matrix and "PopulationVectorT_1" to get "PopulationVectorT_2", and so on. The trouble is, I can't seem figure out how to make the do-loops work. Ideally I would also output the results to a SAS dataset that looked something like this... Time Age NumberOfIndividuals 1 1 133 (or thereabouts) 1 2 . 1 3 . 2 1 . 2 2 . 2 3 . . . . 100 3 . Many thanks - Zach ***My clumsy attempt at the code follows; proc iml; a = ranuni(-1); b = ranuni(-1); c = ranuni(-1); d = ranuni(-1); e = ranuni(-1); f = ranuni(-1); g = ranuni(-1); h = ranuni(-1); i = ranuni(-1); Matrix = (a||b||c) // (d||e||f) // (g||h||i); InitialNumberAge1 = 100; InitialNumberAge2 = 100; InitialNumberAge3 = 100; PopulationVector_Initial = (InitialNumberAge1) // (InitialNumberAge2) // (InitialNumberAge3); PopulationVectorT_1 = Matrix * PopulationVector_Initial; PopulationVectorT_2 = Matrix * PopulationVectorT_1; PopulationVectorT_3 = Matrix * PopulationVectorT_2; quit; run; ```

Back to: Top of message | Previous page | Main SAS-L page