Alternative to for loop i.e. recursion
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
My code like this but what should I do to change the code so that it automatically calcultes the matrix for p=4 without using for loops. I want to convert this function into a recursive function.
function M=FakLoop3
p=3;
v=0;
indis=zeros(1,p);
M=zeros(2^p,p)
for i=0:1
indis(1)=i;
for j=0:1
indis(2)=j;
for k=0:1
indis(3)=k;
v=v+1;
M(v,:)=indis;
end
end
end
end
4 comentarios
Respuestas (1)
Jan
el 3 de Abr. de 2019
Editada: Jan
el 3 de Abr. de 2019
Inlined dec2bin(0:2^p-1):
M = rem(floor((0:2^p-1).' .* 2 .^ (1-p:0)), 2)
Another solution:
M = zeros(2^p, p, 'uint8');
n1 = 1;
n2 = 2^(p-1);
v = uint8([0;1]);
for k = 1:p
M(:, k) = repmat(repelem(v, n2, 1), n1, 1);
n1 = n1 * 2;
n2 = n2 / 2;
end
Or:
M = zeros(2^p, p, 'uint8');
v = uint8(0:2^p-1).';
for k = p:-1:1
M(:, k) = bitget(v, 1);
v = bitshift(v, -1);
end
With doubles instead:
M = zeros(2^p, p, 'uint8');
v = (0:2^p-1).';
for k = p:-1:1
M(:, k) = rem(v, 2);
v = floor(v / 2);
end
0 comentarios
Ver también
Categorías
Más información sobre Function Creation en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!