Multiple values for a variable in a for loop
    12 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Christoffer Thornvall
 el 5 de Oct. de 2015
  
    
    
    
    
    Comentada: Christoffer Thornvall
 el 5 de Oct. de 2015
            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)
end
Thanks in advance!
Regards Christoffer
0 comentarios
Respuesta aceptada
  Guillaume
      
      
 el 5 de Oct. de 2015
        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);
end
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.
Más respuestas (1)
  Purushottama Rao
      
 el 5 de Oct. de 2015
        
      Editada: Purushottama Rao
      
 el 5 de Oct. de 2015
  
      You dont need a for loop for doing it. you can try somthing like
x(1:10)=0.2:0.2:2
y1 = ((fg*x2^2)/(24*E*I))*(x2^2 - 4*L*x2 + 6*L^2)
..................................
which should result in a column vector of same size as x
2 comentarios
  Guillaume
      
      
 el 5 de Oct. de 2015
				
      Editada: Guillaume
      
      
 el 5 de Oct. de 2015
  
			For that matter, you don't need to index the result of an assignment. So it's just
x = 0.2:0.2:2;
which also has the advantage of not having to worry between size mismatch between destination and source.
And of course, the code will not result in a column vector but an error because
- you forgot to rename x2
- you're using ^ with a vector
Ver también
Categorías
				Más información sobre Logical en Help Center y File Exchange.
			
	Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

