how to shorten this equation?

6 views (last 30 days)
Selin Soguksu
Selin Soguksu on 8 May 2012
Hello, I want to ask a question. I'm very new on MATLAB. I have a matrix called K. K(100,40) 100 rows and 40 columns. Matrix includes only 0 or 1. I wrote an equation like this:
İ=0; J=0;
for i=0:99
form1(i+1,1)=K(i+1,j+1)+K(i+1,j+3)+K(i+1,j+5)+K(i+1,j+7)+K(i+1,j+9)+ ..... +K(i+1,j+39);
form2(i+1,1)=K(i+1,j+2)+K(i+1,j+4)+K(i+1,j+6)+K(i+1,j+8)+K(i+1,j+10)+ .... + K(i+1,j+40);
end
And my problem , for j is 1 to 40 so I'm writing too much code. How can I shorten this equation? Is there a way, please help me?

Accepted Answer

Oleg Komarov
Oleg Komarov on 8 May 2012
Sum for each row the odd columns (form1) and the even columns (form2):
form1 = sum(K(:,1:2:end),2);
form2 = sum(K(:,2:2:end),2);
You don't need a loop.
Please read the Getting Started Guide and specifically: Indexing::Language Fundamentals
  1 Comment
Daniel Shub
Daniel Shub on 8 May 2012
This doesn't make use of the logical (0 or 1) nature of K, but I cannot think of a loopless (no arrayfun either) one line solution that uses the logical aspect...

Sign in to comment.

More Answers (1)

Selin Soguksu
Selin Soguksu on 8 May 2012
Thank you very much for your answer. It works great :))

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!