初识Matlab以及Matlab一般性教程
一、初识Matlab
MATLAB 是 MATrix 和 LABoratory 两个词的组合,意为矩阵工厂(矩阵实验室)。
界面
比较熟悉的界面风格~喜欢。
可以把当前文件夹换成工作目录。也就是存放脚本的地方。
命令:
**clc()**用于清除命令行的命令。
**clear()**用于清除工作区的变量。
二、Matlab基础数学运算
2.1 MATLAB的变量与注释
可不声明变量,和python一样。(或者说,python和他一样……)
变量名由一个字母引导,后面可以跟字母、数字、下划线等,且区分大小写。不能以数字、下划线开头~,区分大小写。
注释用%。也可用快捷键“ctrl+R”进行注释,
取消多行注释,则在选中的基础上,快捷键“ctrl+T”。
2.2 MATLAB基本语句
2.2.1直接赋值语句
格式:赋值变量=赋值表达式
分号
若赋值表达式后无分号,则为变量赋值并显示结果
若赋值表达式后有分号。则为变量赋值不显示结果。
省略赋值变量和等号
若省略赋值变量和等号,则结果会赋给保留变量ans。
如下,
>> a=1+3*2 %赋值表达式后无分号。则为变量赋值并显示结果a =7>> a=1+3*2; %赋值表达式后有分号。则为变量赋值不显示结果
>> 1+3*2 %省略赋值变量和等号。则结果会赋给保留变量ansans =7>> 1+3*2; %(带了分号)省略赋值变量和等号。则结果会赋给保留变量ans
>>
Matlab的中括号是用来放矩阵的
Matlab是弧度制
>> sin(30)ans =-0.9880>> sin(pi/6)ans =0.5000>> pians =3.1416>>
**Log**函数(内置与非内置计算)
>> log2(5) %以2为底5的对数ans =2.3219>> log10(5) %以10为底5的对数ans =0.6990>> log(5) %以e为底5的对数ans =1.6094>>
发现matlab没有log以其他数为底的内置函数
解决办法:
① 换底公式换算
Log5x=log10x/log105Log_5x=log_{10}x/log_{10}5 Log5x=log10x/log105
>> log(5)/log(5)ans =1>> log(2)/log(5)ans =0.4307>>
② 利用内置反函数:finverse()函数
>> y=5^2y =25>> f=finverse(y)
未定义与 'double' 类型的输入参数相对应的函数 'finverse'。>>
数据类型怎么转换?
问题未解决……
2.2.2函数调用语句(自定义函数)
自定义函数
可直接在定义:function y=fun2(x)
进行自定义函数。将elseiftest函数改造如下,
function y=fun1(x)
%x=-2;
if x>=1y=10;
elseif x>-1&&x<1y=0;
elsey=-10;
end
注意:使用函数的时候,要用文件名,跟y=fun1没关系。
2.3矩阵运算
2.3.1 矩阵生成
① 直接输入矩阵
对于较小的简单的矩阵,可以从键盘上直接输入矩阵元素,输入时遵循下面的几个原则:
a) 矩阵每一行的元素必须用空格或逗号分开;
b) 在矩阵中,采用分号或回车表明每一行的结束;
c) 整个输入矩阵必须包含在方括号中。
方式一:
>> A=[1,2,3;4,5,6;7,8,9]A =1 2 34 5 67 8 9>>
方式二:
>> A=[1 2 3
2 3 4
5 6 7]A =1 2 32 3 45 6 7>>
矩阵的基本运算
>> A=[1 2 3
2 3 4
5 6 7]A =1 2 32 3 45 6 7>> B=[2,3,4;5,6,7;8,9,10]B =2 3 45 6 78 9 10>> A+Bans =3 5 77 9 1113 15 17>> A-Bans =-1 -1 -1-3 -3 -3-3 -3 -3>> A*Bans =36 42 4851 60 6996 114 132>> A' %转置ans =1 2 52 3 63 4 7>>
由内置函数生成矩阵
在MATLAB中,内置了一些生成矩阵的函数,如:eye(n)生成n维的单位矩阵,ones(n)生成n 维的全1矩阵,zeros(n)生成n维的全0矩阵,另外可以将小矩阵联接起来生成一个较大的矩阵。
>> eye(5) %)生成n维的单位矩阵ans =1 0 0 0 00 1 0 0 00 0 1 0 00 0 0 1 00 0 0 0 1>> ones(4) %)生成n维的全1矩阵ans =1 1 1 11 1 1 11 1 1 11 1 1 1>> zeros(5) %)生成n维的全0矩阵ans =0 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 00 0 0 0 0>>
除了方阵,还可以生成n*m的矩阵
>> ones(3,4)ans =1 1 1 11 1 1 11 1 1 1>> zeros(5,6)ans =0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 00 0 0 0 0 00 0 0 0 0 0>> eye(6,8)ans =1 0 0 0 0 0 0 00 1 0 0 0 0 0 00 0 1 0 0 0 0 00 0 0 1 0 0 0 00 0 0 0 1 0 0 00 0 0 0 0 1 0 0>>
基本运算
在MATLAB中,矩阵的计算非常方面,系统会自动判断矩阵的类型和维度。求转置矩阵用 ‘ ,如求A的转置:>> A’;求逆矩阵用函数inv(),如求 A 的逆矩阵:>> inv(A) ;开平方用函数 sqrt()。
>> A=[1,2,3;2,2,5;3,5,1]A =1 2 32 2 53 5 1>> inv(A)ans =-1.5333 0.8667 0.26670.8667 -0.5333 0.06670.2667 0.0667 -0.1333>> sqrt(A) %开平方ans =1.0000 1.4142 1.73211.4142 1.4142 2.23611.7321 2.2361 1.0000>> A'ans =1 2 32 2 53 5 1>>
生成大矩阵
可以将小矩阵联接起来生成一个较大的矩阵。
>> AA =1 2 32 2 53 5 1>> B=[A, A+5, A+10; A-10, A-5, A]B =1 2 3 6 7 8 11 12 132 2 5 7 7 10 12 12 153 5 1 8 10 6 13 15 11-9 -8 -7 -4 -3 -2 1 2 3-8 -8 -5 -3 -3 0 2 2 5-7 -5 -9 -2 0 -4 3 5 1>>
2.4 循环控制语句
for和while
用for和while来计算1—100的数之和。
For
s=0; %初始化
for k=1:1:100 %第一个冒号之前的1是k的初始值,两个冒号之间的1是k增加的步长,最后一个冒号之后的100是结束值。s=s+k;
end
s
命令行窗口输出
>> for_Tests =5050>>
While
s=0; k=1; %初始值
while(k<=100) %当 k=100 是结束循环。s=s+k;k=k+1;
end
s
命令行窗口输出
>> whiletests =5050>>
条件转移语句elseif
x=-2;y=0;
if x>=1y=10;
elseif x>-1&&x<1y=0;
elsey=-10;
end
y
开关语句switch
x=0;
switch xcase 1y=1case 2y=-1otherwisey=9999
end
输出
>> switchtesty =9999>>
三、基于MATLAB平台的数字图像认知
在 MATLAB 的安装目录下可以找到 MATLAB 自带的图片资源,以 MATLAB 2016b 版本为例,可以在 MATLAB\R2016b\toolbox\images\imdata 目录下找到图片资源。
3.1照片读取imread()函数
A=imread('cameraman.tif'); %可以在工作区看到A是一个 256*256的uint8格式数组
A
B=imread('yellowlily.jpg'); %可以在工作区看到B是一个1632*1224*3的uint8格式数组
figure(1),imshow(A)%打开图形窗口1,显示A图片。
figure(2),imshow(B) %打开图形窗口2,显示B图片。
图像A的矩阵行列为256256,因为其大小即256256
因为是灰度,所以没有标识的整型uint8,且每一个值的范围为0~255。
3.2图像灰度反转
图像读取进来为矩阵。
矩阵可以进行计算。
255-A可得该图像的灰度图的反转
若不指定显示窗口,会输出figure1,覆盖原有的图像
matlab
A=imread('cameraman.tif'); %可以在工作区看到A是一个 256*256的uint8格式数组
figure(1),imshow(A)%打开图形窗口1,显示A图片。%灰度反转
C=255-A;
imshow(C);%也会显示在图形窗口1,覆盖掉A
3.3彩色图像
是三维矩阵。R、G、B三个通道去显示。
读取彩色tif默认为灰度图。
四、遇到过的问题
4.1 字体改为Consolas后编辑器注释中文乱码问题
安装完毕后,越写越觉得Matlab的字体真不咋地,于是乎,将字体改为心心爱爱的Consolas字体,然鹅,发现注释中的中文出现了方框问号的乱码问题……。
原因:
Matlab中缺少Consolas字体,导致其显示不正确。
解决:下载Consolas-with-Yahei-master.zip字体(4个),将其放在matlab字体路径下即可。
Matlab字体路径:D:\Matlab\sys\java\jre\win64\jre\lib\fonts
下载链接:https://pan.baidu.com/s/1-Ozh509csXHgNSMoWGRteg
提取码:vd8a
为什么选择这一种字体呢
Consolas 字体是微软专为程序员开发的一种字体,这一字体的特性是所有字母、数字与符号均能非常容易辨认!而且所有字符都具有相同的宽度,让编程人员看着更舒适。但是不支持中文。
微软雅黑是个人电脑上可以显示的最清晰的中文字体之一,全面支持ClearType技术。
这种字体是一种 Consolas 和 微软雅黑 的混合字体,这样既保证了代码的显示效果,而且也兼容了中文显示。
4.2 ASV文件
在写代码的时候,无意间发现,哎~?创建的脚本旁边还有有个同名的兄弟文件,后缀为CSV。很有趣,
asv就是autosave的意思,.asv文件的内容和相应的.m文件内容一样,用记事本和matlab都能打开它。它可以作为*.m文件的“备份”。
可以在预设中通过设置取消自动备份功能:编辑器/调试器→备份文件。把勾选去掉就行了。
4.3反函数finverse求log52
>> y=5^2y =25>> f=finverse(y)
未定义与 'double' 类型的输入参数相对应的函数 'finverse'。>>
初识Matlab以及Matlab一般性教程相关推荐
- 龙格库塔法解微分方程组的matlab程序,MATLAB实例源码教程:龙格库塔法求解微分方程组源代码实例.doc...
MATLAB实例源码教程:龙格库塔法求解微分方程组源代码实例.doc MATLAB实例源码教程龙格库塔法求解微分方程组源代码实例题目用经典 Runge-Kutta方法求下列一阶微分方程组的近似解y1 ...
- matlab基础与实例教程,MATLAB基础与实例教程
系统全面,实例丰富 考虑到Matlab进行仿真和运算分析时的基础知识和实践操作,讲解从基础的变量.函数.数据类型等入手,涉及到数学分析.图形可视化.Simulink仿真.文件读写等,全面地介绍了Mat ...
- Matlab保留工作区变量教程
Matlab保留工作区变量教程 一 工作区右击 新建 建立变量(这样只能复制数值,字符串教程在下面) 二 双击 '值'对应的0,打开变量 三 复制xlsx(只能是数值)内容到下面 在xlsx中可以一列 ...
- Matlab R2019b[破]安装教程
----Matlab R2019b[破]安装教程 1.解压matlab压缩包获得如下文件夹 2.打开R2019b_win64文件夹,双击"setup.exe"文件进入软件安装界面 ...
- matlab输入多项式 教程,MATLAB多项式 - Matlab教程
MATLAB多项式 - Matlab教程 MATLAB指多项式行向量系数降幂排序.例如,方程 P(x) = x4 + 7x3 - 5x + 9 可以表示为: p = [1 7 0 -5 9]; 计算多 ...
- matlab基础及应用教程,初学者宝典—Matlab基础及其应用教程 PDF 文字版[2M]
内容简介: <高等教育计算机学科"应用型"规划教材:MATLAB基础及其应用教程>由基础知识和应用两大部分组成.基础知识部分详细介绍了MATLAB基础准备与入门.基本的 ...
- Matlab 标定工具箱使用教程
Matlab标定工具箱使用教程 这个教程将带你完整地利用20到25张平面棋盘格图像进行相机标定. 这个教程将让你学会如何使用所有工具箱的特征:载入图像.提取图像角点.运行标定引擎.显示结果.控制精度 ...
- vb调用matlab工具箱,Matlab与VB集成 - 关于VB的经验之谈 - VB爱好者乐园(VBGood) - 关于VB的经验,电子教程,代码,控件,论坛,博客,微博等....
工业生产中经常遇到复杂的数据信息处理问题,需要大运算量的矩阵计算及对分析结果进行实时.直观的图形化显示.Matlab是集数值分析.矩阵运算.信号处理和图形显示于一体的高性能数学软件,将其强大的计算功能 ...
- 炉温曲线系统MATLAB仿真,MATLAB作业——工业炉温控制系统为例教程.doc
控制工程基础大作业 MATLAB软件应用 2016年秋季学期 专业名称:机械设计制造及其自动化专业 班 级: 姓 名: Sun Light Tomorrow 学 号: 授课教师: 成 绩: 一.教学目 ...
- matlab转向语句,MATLAB控制语句
MATLAB控制语句 目的:研究控制结构(用于,是否,切换,中断,继续,输入/输出功能,读取和存储数据). 如果:如果计算逻辑表达式,并根据表达式的值执行一组语句. If语句的语法 例子 输出: Sw ...
最新文章
- args, sys.argv的区别
- 服务器otter部署-实现MySql数据同步
- iOS如何转换十三位的时间戳
- JS三教九流系列-require.js-网站模块化开发
- [云炬创业学笔记]第一章创业是什么测试11
- MyBatis源码分析-2-基础支持层-反射模块-TypeParameterResolver/ObjectFactory
- android wtf_WTF连接池
- 【es】es 写入流程
- matlab画爱心代码分享
- Unity的IOS接入新浪微博
- Netty工作笔记0060---Tcp长连接和短连接_Http长连接和短连接_UDP长连接和短连接
- 程序员的职业规划_大学毕业进入职场,程序员如何进行合理的互联网职业规划?...
- mysql去空格trim_mysql去空格函数trim
- 百度网盘永久分享链接-注册电气工程师(注电)历年考试真题PDF, Word版资料(含答案), 相关视频资料
- 程序员必备的远程控制软件,ToDesk为什么最合适?
- 各种数据类型的取值范围
- MFC中画出圆形按钮,告别方形普通按钮
- 爬虫获取微博首页热搜
- android中评论的删除不了,微信朋友圈可以删评论了,但尴尬的是…
- [windows]win10家庭版切换到管理员账户