shear3d2.m
来自「beamlet变化的工具箱」· M 代码 · 共 106 行
M
106 行
function SV=Shear3D2(V,dim1,dim2,theta,zp,Big);
%
% Shear3D: shearing of a 3D array
% Usage:
% SV=Shear3D(V,dim1,dim2,theta,zp);
% Inputs:
% V 3D matrix (x,y,z) voxel intensities
% dim1,dim2 shearing mode, each pair of coordinates defines different shearing
% theta shearing angle
% zp zero padding mode, if zp=0 then V is cubed and a zero paddind is required
% if zp=1 then matrix is already padded.
% Big if Big=1 then a 2n*n*n array is returned, if 0, n*n*n
% Outputs
% SV the 3D sheared elongated matrix
%
if nargin<6
Big=0;
end
if nargin<5
zp=0;
end
if zp
n=floor(0.1+length(V)/2);
BigVol=V;
else
n=CubeLength(V);
end
switch dim1
case 3
if ~zp
BigVol=zeros(n,n,2*n);
BigVol(:,:,(n+1 - (n/2)):(n+ n/2)) = V;
end
SV=zeros(n,n,2*n);
for i=1:n,
for j=1:n,
switch dim2
case 1
vshift = Shift1DSignal(squeeze(BigVol(i,j,:)),(i-(n+1)/2).*tan(theta));
case 2
vshift = Shift1DSignal(squeeze(BigVol(i,j,:)),(j-(n+1)/2).*tan(theta));
end
SV(i,j,:) = real(vshift(:));
end
end
if Big==0
SV=SV(:,:,1+n/2:3*n/2);
end
case 2
if ~ zp
BigVol=zeros(n,2*n,n);
BigVol(:,(n+1 - (n/2)):(n+ n/2),:) = V;
end
SV=zeros(n,2*n,n);
for i=1:n,
for k=1:n,
switch dim2
case 1
vshift = Shift1DSignal(squeeze(BigVol(i,:,k)),(i-(n+1)/2).*tan(theta));
case 3
vshift = Shift1DSignal(squeeze(BigVol(i,:,k)),(k-(n+1)/2).*tan(theta));
end
SV(i,:,k) = real(vshift(:));
end
end
if Big==0
SV=SV(:,1+n/2:3*n/2,:);
end
case 1
if ~zp
BigVol=zeros(2*n,n,n);
BigVol((n+1 - (n/2)):(n+ n/2),:,:) = V;
end
SV=zeros(2*n,n,n);
for j=1:n,
for k=1:n,
switch dim2
case 2
vshift = Shift1DSignal(squeeze(BigVol(:,j,k)),(j-(n+1)/2).*tan(theta));
case 3
vshift = Shift1DSignal(squeeze(BigVol(:,j,k)),(k-(n+1)/2).*tan(theta));
end
SV(:,j,k) = real(vshift(:));
end
end
if Big==0
SV=SV(1+n/2:3*n/2,:,:);
end
end
%% Part of BeamLab Version:200% Built:Friday,23-Aug-2002 00:00:00% This is Copyrighted Material% For Copying permissions see COPYING.m% Comments? e-mail beamlab@stat.stanford.edu%%% Part of BeamLab Version:200% Built:Saturday,14-Sep-2002 00:00:00% This is Copyrighted Material% For Copying permissions see COPYING.m% Comments? e-mail beamlab@stat.stanford.edu%
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?