Effacer les filtres
Effacer les filtres

Creating a set of equations programmatically

1 vue (au cours des 30 derniers jours)
Lennart Vogt
Lennart Vogt le 22 Oct 2018
Commenté : Lennart Vogt le 23 Oct 2018
I am trying to create a set of terms programmatically in order to build up a set of equations later in the code. The equations are supposed to be stored in Q. The vectors a and b are fixed parameters and vector T is the unknown variable.
n = 5;
a = [6 5 4 3 2 1];
b = [1 2 3 4 5 6];
L = 3;
k = 1;
while k<=n
Q{k,1} = @(T) a(k)*b(k)/L*(T(k+1)-T(k));
k = k+1;
end
Q
What happens when I run the code is that the information in k is passed in the index of Q (so that the terms are stored in different rows) but not in the index of a,b and T:
Q =
5×1 cell array
{@(T)a(k)*b(k)/L*(T(k+1)-T(k))}
{@(T)a(k)*b(k)/L*(T(k+1)-T(k))}
{@(T)a(k)*b(k)/L*(T(k+1)-T(k))}
{@(T)a(k)*b(k)/L*(T(k+1)-T(k))}
{@(T)a(k)*b(k)/L*(T(k+1)-T(k))}
For my purpose I'd like to get an output like this:
Q =
5×1 cell array
{@(T)a(1)*b(1)/L*(T(2)-T(1))}
{@(T)a(2)*b(2)/L*(T(3)-T(2))}
{@(T)a(3)*b(3)/L*(T(4)-T(3))}
{@(T)a(4)*b(4)/L*(T(5)-T(4))}
{@(T)a(5)*b(5)/L*(T(6)-T(5))}
Does anyone have an idea how to get this output?
  3 commentaires
Matt J
Matt J le 23 Oct 2018
That would be true only if you plan to change a and b later.
Lennart Vogt
Lennart Vogt le 23 Oct 2018
Yes, you are right. My bad.

Connectez-vous pour commenter.

Réponse acceptée

Matt J
Matt J le 22 Oct 2018
Modifié(e) : Matt J le 22 Oct 2018
Your code already works fine. Each anonymous function Q{k} will use a different value for k, even if that isn't printed to the screen.

Plus de réponses (1)

Adam Danz
Adam Danz le 22 Oct 2018
Modifié(e) : Adam Danz le 22 Oct 2018
See Matt J's response. This solution will print the values you described by uses sprintf() and str2func().
n = 5;
a = [6 5 4 3 2 1];
b = [1 2 3 4 5 6];
L = 3;
k = 1;
while k<=n
Q{k,1} = str2func(sprintf('@(T) a(%d)*b(%d)/L*(T(%d)-T(%d));', k,k,k+1,k));
k = k+1;
end
  1 commentaire
Lennart Vogt
Lennart Vogt le 22 Oct 2018
Thank you, this is very helpful, too.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Produits


Version

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by