x=input('A矩阵慎猜')
y=input('B矩阵')
subplot(511)
plot(x(1,:),y)
subplot(512)
plot(x(2,:),y)
subplot(513)
plot(x(3,:),y)
subplot(514)
plot(x(4,:),y)
subplot(515)
plot(x(5,:),y)
输入A矩阵[1 2 34 5 67 8 91 5 91 3 6],B矩阵[2 5 8]
画出:
MATLAB(矩阵实验室)是MATrix LABoratory的缩写,是一款由美国The MathWorks公司出品的商业数学软件。MATLAB是一种用于算法开发、数据可磨陵视化、数据分析以及数值计算的高级技术计算语言和交互式环境。除了矩阵运算、绘制函数/数据图像等常用功能外,MATLAB还可以用来创建用户界面及与调用其它语言(包括C,C++和FORTRAN)宽游型编写的程序。
根据矩阵计算:
平移旋转以后,还需要插值,才能显示完整的图像
clear all close all clcimg=imread('lena.bmp')
[h w]=size(img)
%平移旋转参数
a = 10 b = 20
theta = 30 /180*pi
% 旋转矩阵
rot=[cos(theta) -sin(theta) 0
sin(theta) cos(theta) 0
0 0 1]
% 平移矩阵
move = [ 1 0 a
0 1 b
0 0 1]
%平移加旋转
rot = rot * move
pix1=[a b 1]*rot % 左上点的坐标
pix2=[a w+b 1]*rot % 右上点的坐标
pix3=[h+a b 1]*rot % 左下点的坐标
pix4=[h+a w+b 1]*rot % 右下点的坐标
height = round(max([abs(pix1(1)-pix4(1)) abs(pix2(1)-pix3(1))])) 局凯 %变换后图像的高度
width = round( max([abs(pix1(2)-pix4(2)) abs(pix2(2)-pix3(2))])) %变换后图像的宽度
imgn=zeros(height,width)
delta_y = abs(min([pix1(1) pix2(1) pix3(1) pix4(1)]))
delta_x = abs(min([pix1(2) pix2(2) pix3(2) pix4(2)]))
for i=1-delta_y:height
for j=1-delta_x:width
pix=[i j 1]/rot %用变换后图像的点的坐标去寻找原图像点的坐标,
float_Y=pix(1)-floor(pix(1))
float_X=pix(2)-floor(pix(2)) 团腊消
if pix(1)>=1 && pix(2)>=1 && pix(1) <= h && pix(2) <= w
塌知 pix_up_left=[floor(pix(1)) floor(pix(2))] %四个相邻的点
pix_up_right=[floor(pix(1)) ceil(pix(2))]
pix_down_left=[ceil(pix(1)) floor(pix(2))]
pix_down_right=[ceil(pix(1)) ceil(pix(2))]
value_up_left=(1-float_X)*(1-float_Y)
value_up_right=float_X*(1-float_Y)
value_down_left=(1-float_X)*float_Y
value_down_right=float_X*float_Y
imgn(i+delta_y,j+delta_x) = value_up_left*img(pix_up_left(1),pix_up_left(2))+...
value_up_right*img(pix_up_right(1),pix_up_right(2))+...
value_down_left*img(pix_down_left(1),pix_down_left(2))+...
value_down_right*img(pix_down_right(1),pix_down_right(2))
end
end
end
imshow(uint8(imgn))title('平移旋转并插值')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)