Effacer les filtres
Effacer les filtres

how to shorten this equation?

1 vue (au cours des 30 derniers jours)
Selin Soguksu
Selin Soguksu le 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?

Réponse acceptée

Oleg Komarov
Oleg Komarov le 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 commentaire
Daniel Shub
Daniel Shub le 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...

Connectez-vous pour commenter.

Plus de réponses (1)

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

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by