Problems integrating in a for loop in Matlab

AI Thread Summary
The discussion focuses on a user's difficulty with integrating functions in a "for" loop in Matlab. The user expects to populate an array called "spatial" with multiple integral values but encounters an issue where only a single value is assigned. The problem is identified as a syntax error, specifically the use of a comma instead of a colon in the loop declaration. The user acknowledges this mistake and expresses relief at the simplicity of the solution. Overall, the thread highlights the importance of correct syntax in Matlab programming.
ryan.j
Gold Member
Messages
8
Reaction score
0
Problems integrating in a "for" loop in Matlab

My problem strikes me as embarrassingly simple, so hopefully someone can set me straight with ease.

I'm writing a Matlab code in which I'll be wanting to do a good amount of integrating of products of various eigenfunctions. Presently, I'm just trying to get the code up and running and can't seem to get a basic "for" loop to function as I'd expect.

I'd expect that it would populate an array called "spatial" with seven elements, each of which is an integral of a cosine raised to a given power.

Instead, it creates a singly-valued variable called "spatial" and then stops. For what it's worth, the value that it assigns is what I'd expect for the first execution of that loop.

Here is the exact code giving me this grief:

moments = 7;
a = 11;
lambda = pi/a;

for C1 = 1,moments

integrand = @(x)(cos(lambda*x).^(C1+1))
spatial(C1) = quad(integrand,-a/2,a/2)

end


Any help would be greatly appreciated.
Thank you kindly.
-ryan
 
Physics news on Phys.org


I am not a Matlab programmer, but would

Code:
for C1 = 1:moments

work better?
 


I appreciate the help, but the syntax I've listed is the equivalent Matlab "translation" of the C++/FORTRAN loop syntax.
 


Wow. I'm laughing at myself. Thank you kindly. A case of plain and simple space cadetery on my part. ". . .Embarrassingly simple. . ." doesn't do justice to this one.

thanks for taking the time.
-ryan
 
Back
Top