avoding loops by vectorization

5 vues (au cours des 30 derniers jours)
Lee
Lee le 29 Juin 2011
Hello,
I am trying to rewrite a for loop by using vectors. The loop is:
for i=1:8 outer_x(i,:)=x_i(i)+d_del(1,i)*cos(t); end
where d_del is 2x8, x_i is 1x8, and cos(t) is 1x6284
The loop does the following: outer_x(1,:)=x_i(1)+d_del(1,1)*cos(t); outer_x(2,:)=x_i(2)+d_del(1,2)*cos(t); outer_x(3,:)=x_i(3)+d_del(1,3)*cos(t); etc
I tried the following: x_i(1:end)+d_del(1,(1:end))*cos(t);
I was hoping to take each entry of d_del and multiply with every entry of cos(t), but it does not work. Any help will be greatly appreciated!
  1 commentaire
Sean de Wolski
Sean de Wolski le 29 Juin 2011
You say d_del = 2x8; do you use only the first row? You never access d_del(2,anything)

Connectez-vous pour commenter.

Réponses (4)

Oleg Komarov
Oleg Komarov le 29 Juin 2011
outer_x = bsxfun(@plus, x_i, d_del(1,:)*cost.');
Don't use cos (i renamed it in cost) as a variable since it's already a builtin matlab function. If t is the 1 by 6284 variable then ignore my previous comment.
  1 commentaire
Matt Fig
Matt Fig le 29 Juin 2011
I believe that lee meant to take the cosine of a vector t...

Connectez-vous pour commenter.


Andrei Bobrov
Andrei Bobrov le 29 Juin 2011
outer_x = bsxfun(@plus,d_del(1,:)'*cos(t),x_i');
  2 commentaires
Sean de Wolski
Sean de Wolski le 29 Juin 2011
Nice Answer! :)
Andrei Bobrov
Andrei Bobrov le 29 Juin 2011
all +1

Connectez-vous pour commenter.


Sean de Wolski
Sean de Wolski le 29 Juin 2011
outer2 = bsxfun(@plus,(d_del(1,:).')*cos(t),x_i.');
produces the same result as your loop.
  1 commentaire
Andrei Bobrov
Andrei Bobrov le 29 Juin 2011
O! Strong volley!

Connectez-vous pour commenter.


Laura Proctor
Laura Proctor le 29 Juin 2011
This should do it:
outer_x_new = x_i'*ones(size(t))+d_del(1,:)'*cos(t);

Catégories

En savoir plus sur Loops and Conditional Statements 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