MATLAB简单入门_matlab入门-程序员宅基地

技术标签: matlab  矩阵  MATLAB  开发语言  

MATLAB笔记

1、系统知识

  • MATLAB乘法一般进行的是矩阵运算,点运算是矩阵里的元素运算。

​ 比如
​ a=[1 2 3 4];
​ b=[2 2 2 2];
​ 对应元素相乘就是
​ a.*b=[2 4 6 8];
​ 如果直接写
​ a*b会报错,因为直接写*就是矩阵乘法,a的列数不等于b的行数,不能相乘

  • matlab中log如果不加角标则表示以自然对数为底,即ln

  • 模糊查询:输入一个命令的前几个字母后按tab键就可以补全

  • 帮助命令:help plot就可以显示出plot的全部用法

  • who命令可以显示变量,whos可以显示变量的具体信息

>> who

您的变量为:

a  y  

>> whos
  Name      Size            Bytes  Class     Attributes

  a         1x12               96  double              
  y         3x4                96  double              
  • save - 将工作区变量保存到文件中,此 MATLAB 函数 将当前工作区中的所有变量保存在 MATLAB 格式的二进制文件(MAT 文件)filename 中。如果 filename 已存在,save 会覆盖该文件。
  • load - 将文件变量加载到工作区中。此 MATLAB 函数 从 filename 加载数据。
  • 在matlab中,字符串用单引号括起来
  • matlab中input默认输入的只能是数字,如果想要输入字符串,可以这么写:x = input(‘请输入字符串:’,‘s’)
  • disp - 显示变量的值
    此 MATLAB 函数 显示变量 X 的值,而不打印变量名称。显示变量的另一种方法是键入它的名
    称,这种方法会在值前面显示一个前导X =。
  • lasterr - 最后一条错误消息
    此 MATLAB 函数 返回 MATLAB 生成的最后一条错误消息。

2、常用数学函数

1.三角函数和双曲函数### 1.三角函数和双曲函数
2.指数函数

在这里插入图片描述
注: pow2(x)=x^2 pow2(x,y)=x^y

3.复数函数

在这里插入图片描述

4.圆整函数和求余函数

在这里插入图片描述

5.矩阵变换函数

在这里插入图片描述

6.其他函数

在这里插入图片描述

3、画图

格式设置
  • hold on命令,使用后绘图框不会清空。hold off是取消

  • xlabel是横轴说明,ylabel是纵轴说明,title是标题,text(x,y,图形说明)用于在(x,y)点添加说明,legend是图例

  • axis on显示坐标轴;axis off取消坐标轴

  • axis([xmin xmax ymin ymax zmin zmax])用来设置坐标轴长度

  • grand on/off 用来控制开关网格线

  • box on/off 用来控制加不加边框线

  • subplot - 在各个分块位置创建坐标区此 MATLAB 函数 将当前图窗划分为 m×n 网格,并在 p 指定的位置创建坐标区。MATLAB 按行

号对子图位置进行编号。第一个子图是第一行的第一列,第二个子图是第一行的第二列,依此类推。如果指定的位置已存在坐标区,则此命令会将该坐标区设为当前坐标区。

subplot(m,n,p) %表示创建m行n列个子图,在第p个子图上画图
  • figure - 创建图窗窗口
    此 MATLAB 函数 使用默认属性值创建一个新的图窗窗口。生成的图窗为当前图窗。
plot - 二维线图

plot(X, Y, LineSpec)

其中X由所有输入点坐标的x值组成,Y是由与X中包含的x对应的y所组成的向量。LineSpec是用户指定的绘图样式,主要选项如下:

Specifier Line Style*(线型)*
实线(默认样式)虚线(短划线)
: 点线
-. 点划线
Specifier Marker*(坐标点样式)*
o
+ 加号
* 星号
.
x 十字
s 正方形
d 菱形
^ 上指向三角形
v 下指向三角形
> 右指向三角形
<<o:p> 左指向三角形
p 五角星
h 六角形
Specifier Color
y 黄色
m 品红
c 蓝绿色
r 红色
g 绿色
b 蓝色
w 白色
k 黑色

例如:’–or’表示坐标点为圆圈标志,且线型为红色短划线的绘图样式。

plot3 - 三维点或线图

此 MATLAB 函数 绘制三维空间中的坐标。 要绘制由线段连接的一组坐标,请将 X、Y、Z 指定为相同长度的向量。 要在同一组坐标轴上绘制多组坐标,请将 X、Y 或 Z 中的至少一个指定为矩阵,其他指定为向量。

plot3(X,Y,Z)
meshgrid - 二维和三维网格

​ 此 MATLAB 函数 基于向量 x 和 y 中包含的坐标返回二维网格坐标。X 是一个矩阵,每一行是 x 的一个副本;Y 也是一个矩阵,每一列是 y 的一个副本。坐标 X 和 Y 表示的网格有 length(y) 个行和 length(x) 个列。

[X,Y] = meshgrid(x,y)
mesh - 网格曲面图

​ 此 MATLAB 函数 创建一个网格图,该网格图为三维曲面,有实色边颜色,无面颜色。该函数将矩阵 Z 中的值绘制为由 X 和 Y 定义的 x-y 平面中的网格上方的高度。边颜色因 Z 指定的高度而异。

x = 0:0.1:1;
[x,y] = meshgrid(x);
z = sin(y).*cos(x) ;
mesh(x,y,z)
surf - 曲面图

此 MATLAB 函数 创建一个三维曲面图,它是一个具有实色边和实色面的三维曲面。该函数将矩阵Z 中的值绘制为由 X 和 Y 定义的 x-y 面中的网格上方的高度。曲面的颜色根据 Z 指定的高度而变化。

x = 0:0.1:1;
[x,y] = meshgrid(x);
z = sin(y).*cos(x) ;
surf(x,y,z)
bar - 条形图

此 MATLAB 函数 创建一个条形图,y 中的每个元素对应一个条形。如果 y 是 m×n 矩阵,则bar 创建每组包含 n 个条形的 m 个组。

bar(y)
bar(x,y)
barh - 水平条形图

​ 此 MATLAB 函数 创建一个水平条形图,每个条形对应 y 中一个元素。如果 y 是 m×n 矩阵,则 barh 创建每组包含 n 个条形的 m 个组。

barh(y)
barh(x,y)
histogram - 直方图

​ 直方图属于数值数据的条形图类型,将数据分组为 bin。创建 Histogram 对象后,可以通过更改直方图的属性值修改它的各个方面。这对快速修改 bin 属性或更改显示特别有用。

histogram(X)
histogram(X,nbins)

4、解方程式

求解多项式

对于一个多项式,假如其系数为P=[2,2,3,5],即
2 x 3 + 2 x 2 + 3 x + 5 = 0 2x^3+2x^2+3x+5=0 2x3+2x2+3x+5=0
则其根为x = roots§

求解线性方程组

求解线性方程式
2 x 1 + 3 x 2 − x 3 = 2 8 x 1 + 2 x 2 + 3 x 3 = 4 45 x 1 + 3 x 2 + 9 x 3 = 23 2x_1+3x_2-x_3=2\\ 8x_1+2x_2+3x_3=4\\ 45x_1+3x_2+9x_3=23 2x1+3x2x3=28x1+2x2+3x3=445x1+3x2+9x3=23
的解,用下列代码

a = [2,3,-1;8,2,3;45,3,9];
b = [2;4;23];
x = inv(a)*b  %inv(a)表示a矩阵的逆矩阵
求定积分

使用integral函数,下面是求f在[0,1]上的积分

f = @(x) x.*log(1+x)
integral(f,0,1)

5、format命令

matlab中专用命令 format用于针对数据的显示形式进行控制,但该命令不影响数据的储存形式和计算精度

format:设置输出格式

对浮点性变量,缺省为format short。另外,format short, long不影响整型变量的显示。

format    默认格式
format short   5字长定点数,显示5位(scaled fixed point format with 5 digits)
format long   15字长定点数,显示15位双精度,7位单精度(scaled fixed point)
format short e   5字长浮点数
format long e    15字长浮点数
format hex      16进制
format bank      定点货币形式
format rat    小数分数表示
format +       +,-,空格
format compact    压缩空格
format loose       包括空格和空行
format long   15字长定点数
format short e   5字长浮点数
format long e    15字长浮点数
format short g   5位定点或浮点格式。
format long g    对双精度,显示15位定点或浮点格式,对单精度,显示7位定点或浮点格式。

6、矩阵

创建矩阵
  • 矩阵:用[]建立,同行之间用逗号(,)分隔,不同行之间用分号(;)分隔,例如a = [2,3,-1;8,2,3;45,3,9];

  • 使用冒号可以产生一个行向量,一般格式是:e1:e2:e3,其中e1是初始值,e2是步长,e3是终止值。

  • 也可以使用linspace产生行向量,格式为linspace(a,b,n),n是元素总数。和a:(b-a)/(n-1):b等价

    矩阵中的元素可以用下标或者序号表示,下列矩阵A中5可以用A(2,2)或者A(5)(竖着数)表示。
    1      2      3 4      5      6 7      8      9 1 \ \ \ \ 2\ \ \ \ 3\\ 4 \ \ \ \ 5\ \ \ \ 6\\ 7 \ \ \ \ 8\ \ \ \ 9\\ 1    2    34    5    67    8    9

利用冒号获取子矩阵
子矩阵是指由矩阵中的一部分元素构成的矩阵。我们既可以用冒号表达式作为引用矩阵的下标吗,也可以直接用单个的冒号来作为行下标或列下标,其代表全部行或全部列。则有先关概念如下:

A(i,:)                    第i行的全部元素

A(:,j)                    第j列的全部元素

A(i:i+m,k:k+m)            第i~i+m行内,

且在第k~k+m列中的所有元素

A(i:i+m,:)                第i~i+m行的全部元素

%创建3行5列的矩阵A

>> A=[1,2,3,4,5;6,7,8,9,10;11,12,13,14,15]

A =

1     2     3     4     5

6     7     8     9    10

11    12    13    14    15

%利用冒号表达式获得子矩阵,其表达的是矩阵中第1、2行的元素。

>> A(1:2,:)

ans =

1     2     3     4     5

6     7     8     9    10

%表示引用矩阵第2、3行的第1、3、5列的元素

>> A(2:3,1:3:5)

ans =

6     8    10

11    13    15

我们还可以用一般向量和end运算符来作为下标,从而获得子矩阵。end表示某一维的末尾元素下标。例如:

%创建4行5列的矩阵A

>> A=[1,2,3,4,5;6,7,8,9,10;11,12,13,14,15;16,17,18,19,20];

>> A(end,:)        %引用矩阵A的最后一行元素

ans =

16    17    18    19    20

%表示引用第1、4行的第3到最后一列元素

>> A([1,4],3:end)

ans =

3     4     5

18    19    20
reshape - 重构矩阵

可以利用reshape命令来改变矩阵的形状

>> a = [1,2,3,4,5,6,7,8,9,10,11,12];
>> y = reshape(a,3,4)

y =

     1     4     7    10
     2     5     8    11
     3     6     9    12

7、创建函数

function

创建脚本后使用function创建函数

 function - 声明函数名称、输入和输出
    此 MATLAB 函数 声明名为 myfun 的函数,该函数接受输入 x1,...,xM 并返回输出y1,...,yN。此声明语句必须是函数的第一个可执行代码行。有效的函数名称以字母字符开头,并且可以包含字母、数字或下划线。
    function [y1,...,yN] = myfun(x1,...,xM)

下面为创建函数的例子

在名为 stat.m 的文件中定义一个函数,该函数返回输入向量的均值和标准差。

function [m,s] = stat(x)
    n = length(x);
    m = sum(x)/n;
    s = sqrt(sum((x-m).^2/n));
end
从命令行调用该函数。

values = [12.7, 45.4, 98.9, 26.6, 53.1];
[ave,stdev] = stat(values)
ave =
   47.3400
stdev =
   29.4124
匿名函数

f = @(x)表示f是关于x的函数,f = @(x,y,z)表示f是关于x,y,z的函数

匿名函数名 = @(输入参数) 匿名函数表达式
f = @(x) x.*log(1+x) %后面写f的表达式

8、TXT文本操作

数值型文本读取
假如score.txt中数值文本如下

0.13 68 99
0.05 90 80
0.17 99 65
0.08 90 92

下面为读取数据

data = load('score.txt'); %load只支持读取全是数值的文本
w = data(:,1);  %读取第一列数据
s = data(:,2:3);  %读取第二三列数据

字符型文本读取

假若swords.txt内容如下:

刘正风
包惜弱
东方不败
小龙女
杨过
李长寿
老子
李长庚
赵公明

全是字符的文本使用fopen打开

>>fid = fopen('swords.txt','r');  %fid是句柄
>>t1 = fgetl(fid) %读取第一行
t1 = 
	刘正风
	
>>t2 = fgetl(fid) %读取第二行
t2 = 
	包惜弱
	
>>t3 = fgetl(fid) %读取第三行
t3 = 
	东方不败
	
>>t = [t1(1) t2(3) t3(1)]
t = 
	刘弱东

>>fclose(fid); %最后需要关闭
TXT文本写入
fid = fopen('bill.txt','w');
fprintf(fid,'京西商城月账单\n\n');
fprintf(fid,'电子 -20000\n');
fprintf(fid,'包包 %d\n',-1200); 
fprintf(fid,'%s %d\n\n','服装',-24000);
fprintf(fid,'账目细节\n');
detail = -[845 832.5 836 872.2 825 844];
fprintf(fid,'%-5d %5.1f\n',[1:6;detail]);  % %-5d表示占5个字符,左对齐 %5d是右对齐

bill.txt的文本如下:

京西商城月账单

电子 -20000
包包 -1200
服装 -24000

账目细节
1     -845.0
2     -832.5
3     -836.0
4     -872.2
5     -825.0
6     -844.0

9、Excel文本数据操作

读取
>>data = xlsread('data.xlsx','Sheet1','A3:C5')  %分别为 文件名 表名 读取数据区域
%例如读取出来的数据为
data = 
		NaN		81
		NaN 	35
		95 		77
		
>>data(isnan(data)) = 0  %把为NaN的值赋为0
data = 
		0		81
		0	 	35
		95 		77
写入
>>xlswrite('RS.xlsx',{'T','W'},'Sheet1','B1:C1');  % T W为写入的数据
>>XYZ = {'X','Y','Z';6 6 4;8 7 5};
>>xlswrite('RS.xlsx',XYZ','Sheet1','A2:C4');
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weihuan2323/article/details/123489324

智能推荐

RabbitMq应用在发送短信_rabbitmq发送短信-程序员宅基地

文章浏览阅读5.5k次。RabbitMq应用在发送短信:首先安装mq在机器上,注册用户名和密码短信发送分为两部分:1、server端,2、client端server端的配置和编写在maven中配置下载mq的依赖包dependency> groupId>org.springframework.amqpgroupId> artifactId>spring-rabbitartifactId>_rabbitmq发送短信

将前端传过来的base64加密图片保存到本地,并且判断来自于哪个终端_后端保存 签字 base64-程序员宅基地

文章浏览阅读437次。文章目录代码测试结果二、使用步骤1.引入库总结代码@PostMapping(value = "/check") public Map png2(@RequestParam String path,@RequestParam String useragent) throws IOException { Map<String, Object> map = new HashMap(); util util = new util(); if ._后端保存 签字 base64

电脑连接不上WiFi无线网,网络显示出现黄星号,或者感叹号最有效的解决方法:_无线网卡显示黄色星号-程序员宅基地

文章浏览阅读1w次。电脑连接不上WiFi无线网,网络显示出现黄星号,或者感叹号最有效的解决方法:_无线网卡显示黄色星号

Android内置证书文件_.0证书-程序员宅基地

文章浏览阅读3.1k次。将证书文件内置到Android系统内部使其受信任,Android从7.0开始用户证书就开始不受信任了,这就导致抓包的过程中HTTPS无法解密,这一章我们来学习如何内置证书文件。一、环境准备(1) Android系统源码编译环境(2) 开发环境(SubLime Text3)二、..._.0证书

解决numpy.core._exceptions.UFuncTypeError: ufunc ‘add‘ did not contain a loop with signature matching_numpy.core._exceptions.ufunctypeerror: ufunc 'add'-程序员宅基地

文章浏览阅读9.9k次,点赞3次,收藏3次。numpy.core._exceptions.UFuncTypeError: ufunc 'add' did not contain a loop with signature matching types (dtype('int64'), dtype('<U1')) -> None问题原因:就是在遍历数据库时没有拆分出每个字段,之后在进行计算时导致一个标量加一个元组出现不能类型匹配..._numpy.core._exceptions.ufunctypeerror: ufunc 'add' did not contain a loop wi

随便推点

Python + Selenium(十三)鼠标操作-链式操作_selenium send_keys key能否链式操作-程序员宅基地

文章浏览阅读2.3k次,点赞4次,收藏24次。当你需要执行复杂的操作时,比如将一个元素按住拖动到另一个元素上去,需要移动鼠标然后点击并按下键盘某个按键等等。当然,在 Web 页面上,这种操作好像比较少。但是,如果遇到了怎么办呢?这就需要用到 ActionChains 这个类啦。ActionChains 提供了对动作的链式操作,也就是可以生成一个操作的队列,将复杂的操作过程分解成单个操作,然后组合起来一次性执行。这里面主要是鼠标操作,加..._selenium send_keys key能否链式操作

python自动发送邮件自定义邮件发件人和收件人的显示内容_python3 smtp 自定义中文收件人-程序员宅基地

文章浏览阅读7.5k次。#自定义处理邮件收发地址的显示内容 def _format_addr(s): name,addr = parseaddr(s) print name print addr #将邮件的name转换成utf-8格式,addr如果是unicode,则转换utf-8输出,否则直接输出addr return form..._python3 smtp 自定义中文收件人

linux普通用户执行管理员权限visudo_linux 新家用户执行管理员#-程序员宅基地

文章浏览阅读2.6k次。因为服务器很多,为了方便发布版本,弄了个简单的版本管理器,但是普通用户在执行管理员权限的时候一直提示sudo cp /tmp/test.war /opt/test is not allowed to execute也查了一些资料 说是在提权后用超级管理员用户执行visudo添加test ALL=(ALL) NOPASSWD: ALL (放_linux 新家用户执行管理员#

java内存模型_java [goforit]-程序员宅基地

文章浏览阅读100次。例子: import java.util.Random;public class MemoryTest { int x, y,read_x,read_y; public void randomSleep(){ try { Thread.sleep(new Random().nextInt(30)); ..._java [goforit]

bootstrap table 选中一行_bootstraptable只允许选中一行-程序员宅基地

文章浏览阅读7.8k次。//获取表格选中行var rows = $table.bootstrapTable('getSelections');//判断是否选择行if (!rows || rows.length == 0) { alert(&quot;请先选中一行!&quot;) return;}_bootstraptable只允许选中一行

利用Pygame写一个贪吃蛇小游戏_pygame写个贪吃蛇小游戏-程序员宅基地

文章浏览阅读461次。这是之前学校Python实训的时候写的,虽说有些瑕疵,但是比较有纪念意义。学了又忘,忘了又学。附上几张效果图:游戏开始界面颜色、文字、图形都可以自行更改:游戏进行界面你可以进行果实颜色、贪吃蛇颜色和速度和相关游戏设置的更改,不要太快,我也是试了之后才发现我自己这么手残… …这里得分是吃一次果实一分,其实就是非常简单的在一个pygame创造的窗口中,对随机出现的一个二维数组进行遍历循环… …游戏结束界面当时中国新说唱还在热播,我看了几期直接被节目里满嘴的“bro”给洗脑了,现在想来竟然如_pygame写个贪吃蛇小游戏

推荐文章

热门文章

相关标签