医疗器械批准文号:求助Matlab矩阵旋转命令!

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 19:46:05
图片矩阵A(128×128)原点为左下角。
先将原点移动到矩阵中心,再作任意角度旋转。
用极坐标和正交坐标都可以,但必须是用matlab7.0的命令!
加2个小问题:
矩阵A和B合并成(128×256)或者(256×128)矩阵的命令。
生成矩阵C,数值全为0或者255的命令!
时间紧迫,分数多多!

【1】旋转。128*128太大,用3*3和5*5来演示。
>>A=rand(3) %【3*3矩阵,相当于128*128】
A =
0.4447 0.9218 0.4057
0.6154 0.7382 0.9355
0.7919 0.1763 0.9169
>>B=rand(5) %【6*6矩阵,相当于256*256】
B =
0.4103 0.0099 0.2722 0.9318 0.2026
0.8936 0.1389 0.1988 0.4660 0.6721
0.0579 0.2028 0.0153 0.4186 0.8381
0.3529 0.1987 0.7468 0.8462 0.0196
0.8132 0.6038 0.4451 0.5252 0.6813
>>AA=rot90(A) %【逆时针旋转90度】
AA =
0.4057 0.9355 0.9169
0.9218 0.7382 0.1763
0.4447 0.6154 0.7919

【2】A和B合成C
>>C=zeros(length(A),length(B)) %【3*5矩阵,且全为0】
C =
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
>> CC=C+255 %【全为255】
CC =
255 255 255 255 255
255 255 255 255 255
255 255 255 255 255

fliplr(a) 矩阵左右翻转
flipud(a) 矩阵上下翻转
rot90(a)矩阵逆时针旋转90度(把你的头顺时针旋转90看原数就可以知道结果了,^-^)
rot90(a,k) k参数定义为逆时针旋转90*k度。

%任意角度旋转:
n_px=128;
n_pz=128;

temp_sp =rand(n_px,n_pz); % 目标矩阵,n_px * n_pz
temp_sp(64,:)=2;
temp_sp(:,64)=2; %做一个十字标记

offset_px = floor(n_px/2);
offset_pz = floor(n_pz/2);% 以矩阵中心为原点

h_px=1;
h_pz=1;

%新坐标系定义
px= -offset_px : h_px : n_px-offset_px;
pz = -offset_pz : h_pz : n_pz-offset_pz;

MAX_px = max(px);
MIN_px = min(px);
MAX_pz = max(pz);
MIN_pz = min(pz);

%%%%%rotation
theta = 30*pi/180; % 需要旋转的角度,正值为逆时针
r_m = [cos(theta) -sin(theta) ; sin(theta) cos(theta)]; %旋转矩阵
sp_new = zeros(n_px,n_pz); %旋转后输出的矩阵

for ix = 1:1:n_px
for iz = 1:1:n_pz

PXZ = [px(ix);pz(iz)]; %旋转后坐标系下某点坐标
PXZ_org = r_m * PXZ; %在旋转前坐标系下的位置

%以下进行插值

mm = floor((PXZ_org(1)-MIN_px)/h_px);
nn = floor((PXZ_org(2)-MIN_pz)/h_pz);

mm_r = (PXZ_org(1)-MIN_px)/h_px-mm;
nn_r = (PXZ_org(2)-MIN_pz)/h_pz-nn;

if(mm<=0 ||nn<=0 || mm>=n_px||nn>=n_pz )
sp_new(ix,iz) = 0 ; % 越界都赋值为0
else
%interpolate
sp_new(ix,iz) = (1-mm_r)*(1-nn_r)*temp_sp(mm,nn)+ (mm_r)*(1-nn_r)*temp_sp(mm+1,nn)+ (1-mm_r)*(nn_r)*temp_sp(mm,nn+1)+ (mm_r)*(nn_r)*temp_sp(mm+1,nn+1);
end
end
end

figure;
pcolor(temp_sp);shading flat;
figure;
pcolor(sp_new);shading flat;