Я хочу реализовать код, который перетасовывает информацию внутри куба размера (bs x bs x bs) так, чтобы каждый элемент внутри куба (x, y, z) отображался однозначно в (x_new, y_new, z ). Но код не работает должным образом.
Прикрепленное изображение является фактическим математическим определением кода, который я попытался дискретизировать и реализовать. Исходные математические уравнения работают на единичном кубе, тогда как у меня есть куб измерения bs. Может кто-нибудь взглянуть на мой код и намекнуть на предполагаемую ошибку?
n=bs;
NEWI=zeros(bs,bs,bs);
for row= 1:bs
for col=1:bs
for height=1:bs
if ( 1<=row && row<=(n/2) && 1<=col && col<=(n/2) )
x_new= 2*(row-1) + 1;
y_new= 2*(col-1) + 1;
z=floor(0.25*(height-mod(height-1,2)))+1;
end
for
for
for
Now this is just the first line implementation of the equation given in the figure. But as we see the coorepondence of points
(1,1,1) goes to (1,1,1)
(1,1,2) goes to (1,1,1)
(1,1,3) goes to (1,1,1)
(1,1,4) goes to (1,1,1)
which clearly is not a unique mapping, whereas the function claims of giving unique images for every (x,y,z). So my question is clearly there has to be some adjustments to discretize this map. Can somebody suggest