前言。matlab 是美国mathworks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括matlab和simulink两大部分。
在科学研究和工程应用中,往往要进行大量的数学计算,其中包括矩阵运算等。这些运算一般来说都难以用手工精确、快捷地完成,而通常是借助特定的计算机程序来完成相应的计算功能,目前流行的编程语言有basic、fortran和c语言等。对于大多数科学工作者来说,既需要掌握本专业的相关知识,还需要熟练地掌握编程语言,这无疑具有一定的难度。
编制程序也是繁杂的工作,不仅消耗人力与物力,而且影响工作进程和效率。matlab就是为解决上述矛盾而产生的。matlab是数学建模必备工具。
matlab 产品族可以用来进行以下各种工作:
● 数值分析
● 数值和符号计算
● 工程与科学绘图
● 控制系统的设计与**
● 数字图像处理技术。
● 数字信号处理技术。
● 通讯系统设计与**
● 财务与金融工程
matlab 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用 matlab 函数集)扩展了 matlab 环境,以解决这些应用领域内特定类型的问题。
matlab特点:
此高级语言可用于技术计算
●此开发环境可对**、文件和数据进行管理。
●交互式工具可以按迭代的方式探查、设计及求解问题
●数学函数可用于线性代数、统计、傅立叶分析、筛选、优化以及数值积分等
●二维和三维图形函数可用于可视化数据
●各种工具可用于构建自定义的图形用户界面
●各种函数可将基于matlab的算法与外部应用程序和语言(如 c、c++、fortran、j**a、com 以及 microsoft excel)集成。
一、彩色图像转灰度。
1、设计目的:
掌握彩色图像转灰度图像的原理及算法;
掌握显示图像的常用函数;
掌握特殊矩阵及矩阵的表示方法。
2、设计任务:
读入彩色和灰度图像并显示;
对彩色图像转化为灰度图像并显示;
比较两种彩色图像转灰度图像方法的效果。
3、源**如下:
x = imread('读入一个彩色图像;
width,height,dim]=size(x计算彩色图像的尺寸以及维数;
y1=zeros(width,height新建立一个大小为width*height的全零矩阵y1;
y2=zeros(width,height新建立一个大小为width*height的全零矩阵y2;
x=double(x将整形转变为双精度形;
y1=round(0.299*x(:,1)+0.587*x(:,2)+0.114*x(:,3));
根据亮度分量与r、g、b的关系将彩色图像转变成灰度图像y1;
y2=round((x(:,1)+x(:,2)+x(:,3))/3);
对r、g、b相加然后求均值将其赋给灰度图像的亮度分量y2;
subplot(1,3,1),imshow(uint8(x));将当前窗口分成1*3的区域,将原图显示在一区;
subplot(1,3,2),imshow(uint8(y1));将当前窗口分成1*3的区域,将y1显示在二区;
subplot(1,3,3),imshow(uint8(y2));将当前窗口分成1*3的区域,将y2显示在三区;
彩色转灰度后得到的图像:
四、效果比较:
由以上三幅图像可以看出,用不同的系数与r、g、b相乘后的值赋给亮度y以后,所得的图像比对r、g、b求均值后赋给亮度y的方法所得的图的亮度更加强,从matlab**平台也能看出用第一种方法得到的像素值比第二种方法得到的像素值大。
二、灰度图像的缩放。
1、设计目的:
掌握灰度图像缩放的原理及算法;
掌握利用if语句实现选择结构的方法;
2、设计任务:
对灰度图像实现按比例缩小和放大功能:
缩小:行数*0.6,列数*0.75;
放大:行数*1.2,列数*1.5。
3、源**如下:
放大**:x=imread('读入一个灰度图像;
weight,height]=size(x计算灰度图像的尺寸以及维数;
y=zeros(weight*1.5,height*1.2新建一个(weight*1.5)*(height*1.)2的全零矩阵;
x=double(x将整形转变为双精度形;
for m=1:1:round(weight*1.5变量m从1到weight开始循环;
for n=1:1:round(height*1.2变量n从1到height开始循环。
if m/1.5>0.5&&n/1.2>0.5若扩大后的边界与其对应的系数相比之后都在其原图像边界的范围内;
y(m,n)=x(round(m/1.5),round(n/1.2将新图像边界与其相应系数之比的对应出的像素值赋给新图像;
elseif m/1.5<0.5&&n/1.2>0.5若扩大后的边界与其对应的系数相比之后行元素不在其原图像边界的范围内;
y(m,n)=x(1,round(n/1.2将原图像第一行的元素赋给新图像;
elseif m/1.5>0.5&&n/1.2<0.5若扩大后的边界与其对应的系数相比之后列元素不在其原图像边界的范围内;
y(m,n)=x(round(m/1.5),1将原图像第一列的元素赋给新图像;
elseif m/1.5<0.5&&n/1.2<0.5若扩大后的边界与其对应的系数相比之后都不在其原图像边界的范围内;
y(m,n)=x(1,1将原图像第一行第一列的元素赋给新图像;
endif语句结束;
end变量n循环结束;
end变量m循环结束;
subplot(1,2,1),imshow(uint8(x将当前窗口分成1*2的区域,原图像显示在一区;
subplot(1,2,2),imshow(uint8(y将当前窗口分成1*2的区域,新图像显示在二区;
放大后得到的图像:
效果比较:由上图可以看出,放大后的图像出现失真。
缩小**:x=imread('读入一个彩色图像;
m,n]=size(x计算灰度图像的尺寸;
y=zeros(m*0.6,n*0.75新建一个大小得(m*0.6)*(n*0.75)的全零矩阵;
x=double(x将整形转变为双精度形;
for i=1:1:m*0.6变量i从1到m*0.6开始循环;
for j=1:1:n*0.75变量j从1到n*0.75开始循环;
if m>round(i/0.6)&&n>round(j/0.75)
%若缩小后的边界与其对应的系数相比之后都在其原图像边界的范围内;
y(i,j)=x(round(i/0.6),round(j/0.75));
将新图像边界与其相应系数之比的对应出的像素值赋给新图像;
elseif m>round(i/0.6)&&n %若缩小后的边界与其对应的系数相比之后列元素不在其原图像边界的范围内;
y(i,j)=x(i,n);
将原图像最后一列的元素赋给新图像;
elseif mround(j/0.75)
%若缩小后的边界与其对应的系数相比之后行元素不在其原图像边界的范围内;
y(i,j)=x(m,round(j/0.75));
将原图像最后一行的元素赋给新图像;
MATLAB课程设计
1 求被控对象传递函数g s 的matlab描述。num 789 6312 11835 den 1 14 56 64 0 0 gs tf num,den transfer function 789 s 2 6312 s 11835 s 5 14 s 4 56 s 3 64 s 2 2 求被控对象脉冲...
MATLAB课程设计
课程设计。题目 matlab计算器。姓名 班级 学院 专业 完成时间。1总体设计。该计算器程序主要是matlab来制作,界面主要由四个静态文本框 21个运算按钮和两个动态文本框组成。实现的运算功能有四则运算 加 减 乘 除。而且添加了括号使人们使用时更加简单。这些计算功能主要调用了matlab的自定...
MATLAB课程设计
matlab课程设计。如图所示,为测量系统的示意图,它由两个能相互转动的连杆,角度编码器和滚轮等组成。o1为固定点,o2点为转动点,o3点为滚轮的中心,连杆的有效长度分别为l1和l2。任一位置时,连杆1相对于某基准位置的角度为 1,两连杆的相对角度为 2。其中对于 1,取垂直方向为基准线,在基准线左...