MATLAB: Multiple values for a variable in a for loop


Hi, I'm just trying to do something really simple but it doesn't work and I don't know why despite the error message. I'm new to matlab so be gentle.
x is a column vector (10,1) with values ranging from 0.2 to 2 with 0.2 incraments. I would like for the eq to go through each of the x values and then possibly, if someone is willing to help, to store these 10 calculated values in a new (10,1) column vector.
for x2 = x(1:10)
y1 = ((fg*x2^2)/(24*E*I))*(x2^2 - 4*L*x2 + 6*L^2)
Thanks in advance!
Regards Christoffer

Best Answer

Assuming that fg, E, I, and L are scalar, the reason your code does not work (and you should have explained what does not work mean) is because you're always assigning the output to the same element of the same variable: y1(1) (if you don't put an index, it's assumed to be one). To solve, one possible way
for idx = 1:numel(x)
y(idx) = ((fg*x(idx)^2)/(24*E*I))*(x(idx)^2 - 4*L*x(idx) + 6*L^2);
However, the loop is not needed. Simply use the vectorising ability of matlab and just one line is needed:
y = ((fg*x.^2)/(24*E*I))*(x.^2 - 4*L*x + 6*L^2)
Note that I've replaced the ^ with .^ to tell matlab to apply the function elementwise.
Related Question