How to define both integer and decimal increment in one for loop?

1 view (last 30 days)
Hi all,
I would like to define one for loop that goes from 0 to 1 with an increment of 0.1 and then goes from 1 to 30 by an increment of 2, i.e., combination of the following two loops. Is it possible? If so, how?
for n = 1:2:30
f(round((n-1)/2+1)) = ....
z = 0: 0.1: 1;
for n = 1: length(z)
f(n) = ..
Thanks in advance

Accepted Answer

Image Analyst
Image Analyst on 23 Jun 2021
Try this:
allValues = [0:0.1:1, 3:2:30];
numValues = length(allValues)
% Preallocate some results we want to store in the loop.
results = zeros(1, numValues);
% Now loop over all values.
for k = 1 : numValues
thisValue = allValues(k);
fprintf('Processing element #%d of %d, which is %f.\n', ...
k, numValues, thisValue);
% results(k) = YourFunction(thisValue);

More Answers (1)

millercommamatt on 23 Jun 2021
I'm not clear on what you're looking for. Do you want something like this:
span1 = 0:0.1:1;
span2 = 3:2:30;
span = [span1 span2];
for ii = span
% do something with ii...
Image Analyst
Image Analyst on 24 Jun 2021
I was responding to Susan and just said No, then I went to MATLAB to develop code that works. Then I came back here to further explain why it wouldn't work and edited my comment but then I didn't notice miller's comment since it was posted while I was working on the code in MATLAB, and I mistakenly copied the loop from miller's comment instead of Susan's (not noticing that millers was a new comment). Sorry for the misunderstanding, that sometimes happens when people are posting at the same time. miller's code snippet #2 will also work for Susan.

Sign in to comment.


Community Treasure Hunt

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

Start Hunting!

Translated by