MATLAB如何为数据矩阵画图?

MATLAB如何为数据矩阵画图?,第1张

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 clc

img=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('平移旋转并插值')


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12460615.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存