Produce matrix with loop

1 次查看(过去 30 天)
Tom
Tom 2011-2-26
Hi! I have a homework problem that I have difficulties with.
The problem is asking me to create a m by n matrix, using a function file, whose elements are going to be the sum of the index of each element. For exemple my first column would be A(1,1)=2 A(2,1)=3 A(3,1)=4 and so on.. I also must use the ''for'' loop. I tried to figure out how am I going to solve this problem before typing anything in my script file, so I thought that I could assign a matrix composed of ones, and of the dimensions of my outpout argument like U=ones(m,n) so my index variable ''k'' in my for loop could give the right value of each one after each pass, but I can't figure out hiow can I do that.. Can you give me a hint ?
Thanks!

采纳的回答

Matt Fig
Matt Fig 2011-2-26
Most people on here will not just do a whole homework assignment for you. If you don't do any work, you will not learn. I will show you most of the solution, and I bet you can easily fill in the rest. Be sure to study it so you understand.
function A = elems_sum(m,n)
% Put help here.
for ii = 1:m
for jj = 1:n
A(ii,jj) = ??????;
end
end
  2 个评论
Tom
Tom 2011-2-26
I'm sorry If I went too fast on the ''ask'' button I didn't know until now how could I use a nested loop. But be assured that I tried to find a way to write my script using my references. But thank you very much for your time. If I understand, the two for statements indicates that for the first pass ii will equal 1, until all the values of jj are passed; so in my function the loop does (1+1),(1+2) etc.. until ii=m, then the loops ends and I have my matrix.. Thanks again..
Matt Fig
Matt Fig 2011-2-26
Sounds like you got it. Good luck to you.

请先登录,再进行评论。

更多回答(1 个)

chris hinkle
chris hinkle 2011-2-27
Here's an idea, tell your teacher not to promote for loops and take advantage of matlabs strength in vectorized functions
Matr=ones(m, n); [y,x] = find(Matr > 0); indMat = y+x;
The less you use for loops the better!
  2 个评论
Matt Fig
Matt Fig 2011-2-27
You could have just used find(Matr) without first doing the logical comparison. And I think you meant:
Matr=ones(m, n); [y,x] = find(Matr); Matr(:) = y+x
We can even do without using FIND all together:
A = cumsum([2:m+2;ones(n-2,m+1)])
chris hinkle
chris hinkle 2011-2-27
Good point matt, and yes I was just being sloppy just answered this on my phone!

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by