how to shorten this equation?

2 Ansichten (letzte 30 Tage)
Selin Soguksu
Selin Soguksu am 8 Mai 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?

Akzeptierte Antwort

Oleg Komarov
Oleg Komarov am 8 Mai 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 Kommentar
Daniel Shub
Daniel Shub am 8 Mai 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...

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

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

Kategorien

Mehr zu Programming finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by