552 views (last 30 days)

Show older comments

How can I process a sequence of files?

Walter Roberson
on 16 Feb 2020

Pre-allocate an output array that is at least 3 dimensions, with one dimension being the number of times the first loop will execute, a second dimension being the number of times the second loop will execute, and the third dimension being the number of times the third loop will execute. Then assign to the output according to how many loop iterations you have done.

For example,

Lvals = [-83, 149, -5, 0, -2, 101];

numL = length(Lvals);

output = zeros(7, 3, numL);

for J = 9:17:11

Jidx = round((J-9)/17) + 1;

for K = 1000:500:2000

Kidx = round((K-500)/500);

for Lidx = 1 : numL

L = Lvals(Lidx);

output(Jidx, Kidx, L) = J.^2 + K/7 + sin(L.^3);

end

end

end

Jan
on 26 Dec 2012

Edited: Jan
on 8 Apr 2021

joshua Abam
on 24 Jun 2019

Hi Walter

I seem not to have follow your suggestion can you help by adding some more comments to ease my grap or better still use this example to illustrate it and where best can I possible attached that to a GA code.

function f = gaintobj(x)

f = rastriginsfcn([x(1)-6 x(2)-13]);

f = f + rastriginsfcn([x(3)-3*pi x(4)-5*pi]);

lb = [1 1 -30 -30];

ub = [20 20 70 70];

%%

% Set the integer variables and number of variables.

IntCon = [1 2];

nvar = 4;

%%

% Set options to call the custom output function, and to initially have

% little crossover.

options = optimoptions('ga','OutputFcn',@gaoutputfunround,'CrossoverFraction',0.2);

%%

% For reproducibility, set the random number generator.

rng(10)

%%

% Set the objective function and call the solver.

fun = @gaintobj;

[x,fval] = ga(fun,nvar,[],[],[],[],lb,ub,[],IntCon,options)

Sean de Wolski
on 29 Jul 2016

Edited: Sean de Wolski
on 29 Jul 2016

Ismail Qeshta
on 11 Nov 2017

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

Start Hunting!