Iteration Without the Implementation of Loops

I am interested in being able to run this particular code using i as the iterating vector. While this can easily be accomplished using a for-loop, I would like to do this without using loops of any kind. Essentially what I want is for the vector q to contain all ten values of F when q is solved for a given i-value. The issue currently is that F does not take any value of i, so I am left with an empty x-matrix in the end. I want to iterate for each value of i in the vector, but without using loops. Does anybody have any suggestions?
%%%Test program
%%Clear variables
close all;
clear all;
clc;
%%Definitions
syms q
x = [];
i = 1:10;
F = i - 2*q == 0;
solq = solve(F,q);
x = (x,solq)

1 commentaire

BM
BM le 31 Août 2017
Modifié(e) : BM le 31 Août 2017
I tried to adapt this base program to my needs, but I am running into an issue. In my particular program I have my function F dependent on other functions. Would you have suggestions on how to incorporate the same idea if the program was modified to include
q = sym('q',[1,10]);
i = 1:10;
M = @(q) tan(q)/(1+sin(7*q))
N = log(M(q))
F = i - 2*q*N == 0;
solq = solve(F,q)
I obtain the same errors in this program that I do in my actual program, and would appreciate understanding a little more why this is the case. If I solved F via for-loops, everything works. Thanks for your time.

Connectez-vous pour commenter.

 Réponse acceptée

John D'Errico
John D'Errico le 24 Août 2017
Modifié(e) : John D'Errico le 24 Août 2017
q = sym('q',[1,10]);
i = 1:10;
F = i - 2*q == 0;
solq = solve(F,q)
solq =
struct with fields:
q1: [1×1 sym]
q2: [1×1 sym]
q3: [1×1 sym]
q4: [1×1 sym]
q5: [1×1 sym]
q6: [1×1 sym]
q7: [1×1 sym]
q8: [1×1 sym]
q9: [1×1 sym]
q10: [1×1 sym]
solq.q3
ans =
3/2
I suppose you could use an implicit loop too, in the form of cellfun. But the above works.

3 commentaires

BM
BM le 25 Août 2017
Modifié(e) : BM le 25 Août 2017
The code above does not seem to work. It breaks down at the 'solq = struct with fields' command. Could I ask how I would use the alternative form you suggested as well to accomplish this feat? I was always under the impression I was going to have to use some kind of matrix multiplication to get this to work.
Adam
Adam le 25 Août 2017
That's not a command, that's just the output from the previous command, in the command window.
BM
BM le 29 Août 2017
Yeah, I realized that after when I arrived at the chapter (in a reference book) that dealt with such information. Sorry for my confusion. Thanks again!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange

Question posée :

BM
le 24 Août 2017

Modifié(e) :

BM
le 31 Août 2017

Community Treasure Hunt

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

Start Hunting!

Translated by