How do I change the increment in a loop

215 visualizaciones (últimos 30 días)
MATTHEW FOX
MATTHEW FOX el 9 de Mayo de 2017
Comentada: Steven Lord el 12 de Mzo. de 2023
I have been asked to write a function that calculates the sum of the series;
2^(5*i-1)
where i = 1,3,5... I currently have
function s = summation(N)
% Syntax
% s = summation (N)
% Input
% N = Number of terms in series
%Output
% sum of series
%Initilising loop to be zero
s = 0;
for i = 1:N
% loop adds previous value of s to the next one
s = s + 2^(5*i-1);
end
% increasing increment i by 2 from 1 [1,3,5...etc]
i = i+2;
end
which calculates the sum for i=1,2,3.... How do I change the increment of i?

Respuestas (2)

Stephen23
Stephen23 el 9 de Mayo de 2017
Editada: Stephen23 el 9 de Mayo de 2017
i = 1:2:N
^ define the step size here!
The colon operator is clearly explained in the documentation:
  2 comentarios
Jan
Jan el 9 de Mayo de 2017
@MATTHEW FOX: See also: doc for
Note: Whenever you have questions concerning a specific command, read the documentation at first. Matlab's docs are the best I've ever read. They are useful and clear, and the "See also:" lines are smart guesses of what the user might be interested also in, when the command does not perfectly solve the problem.
Noman Rathore
Noman Rathore el 5 de Dic. de 2018
Hello i am New researcher , and new to Matlab programming , but i understand the basius of programming , my querry is how i can use help and support for guidance for programming my own program. i most of the time do not find the useful help.
Nomi

Iniciar sesión para comentar.


Phirime Monyeki
Phirime Monyeki el 10 de Feb. de 2020
N = 100 ; % should be multiple of the number of parts you want
th = linspace(0,2*pi) ;
y = cos(th) ;
plot(th,y)
% divide the section into 5 equal parts
th1 = reshape(th,5,[]) ;
y1 = reshape(y,5,[])
  3 comentarios
Walter Roberson
Walter Roberson el 12 de Mzo. de 2023
help colon
: Colon. J:K is the same as [J, J+1, ..., J+m], where m = fix(K-J). In the case where both J and K are integers, this is simply [J, J+1, ..., K]. This syntax returns an empty matrix if J > K. J:I:K is the same as [J, J+I, ..., J+m*I], where m = fix((K-J)/I). This syntax returns an empty matrix when I == 0, I > 0 and J > K, or I < 0 and J < K. COLON(J,K) is the same as J:K and COLON(J,I,K) is the same as J:I:K. The colon notation can be used to pick out selected rows, columns and elements of vectors, matrices, and arrays. A(:) is all the elements of A, regarded as a single column. On the left side of an assignment statement, A(:) fills A, preserving its shape from before. A(:,J) is the J-th column of A. A(J:K) is [A(J),A(J+1),...,A(K)]. A(:,J:K) is [A(:,J),A(:,J+1),...,A(:,K)] and so on. The colon notation can be used with a cell array to produce a comma- separated list. C{:} is the same as C{1},C{2},...,C{end}. The comma separated list syntax is valid inside () for function calls, [] for concatenation and function return arguments, and inside {} to produce a cell array. Expressions such as S(:).name produce the comma separated list S(1).name,S(2).name,...,S(end).name for the structure S. For the use of the colon in the FOR statement, See FOR. For the use of the colon in a comma separated list, See VARARGIN. Documentation for colon doc colon Other uses of colon codistributed/colon duration/colon codistributor1d/colon embedded.fi/colon codistributor2dbc/colon gpuArray/colon datetime/colon matlab/colon deep.internal.recording.RecordingArray/colon sym/colon distributed/colon symbolic/colon dlarray/colon
Steven Lord
Steven Lord el 12 de Mzo. de 2023
For the original question looking at the documentation for the colon function (which is the function name for the : operator) is correct. That's the tool you use to create a vector if you know the two desired endpoints and the increment.
For the answer under which these comments lie, you'd want to look at the documentation for the linspace function. That's the tool you use to create a vector if you know the two endpoints and how many elements you want the vector to have.
If you know one of the endpoints, the increment, and the number of elements you want the vector to have you can do that with colon as well.
startPoint = 1;
increment = 1;
numPoints = 10;
x = startPoint + increment*(0:numPoints-1)
x = 1×10
1 2 3 4 5 6 7 8 9 10
Keep an eye out for fencepost error in this last case.

Iniciar sesión para comentar.

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by