草庐IT

MATLAB简介与矩阵定义

萤火虫的小尾巴 2023-12-23 原文

MATLAB简介与矩阵定义


MATLAB简介

MATLAB简介

MATLAB是 matrix & laboratory 两个词的组合,意为矩阵工厂(矩阵实验室)。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中。

MATLAB界面(以2016a为例)


实时编辑器字体的放大缩小:ctrl + 鼠标的滚轮。


实时脚本编辑器中代码和文本切换的快捷键:alt + enter。



插入分解符,可以使代码分块运行。

注释

注释符号:%

续行符

续行符符号:...

每行结束符号

每行结束符号:;

常用函数

abs( 参数 )

求绝对值或复数的模

sqrt( 参数 )

开平方

mod( x, y )

取余
求 x 对 y 的余数

exp( 参数 )

指数函数,参数为次方

log( 参数 )

求以 e 为底的对数

log2( 参数 )

求以 2 为底的对数

log10( 参数 )

求以 10 为底的对数

三角函数

sin( x )
cos( x )
tan( x )
cot( x )

统计相关的函数

sum()

求和
sum( [1,2,3] )求1 2 3三数之和

mean()

求均值
mean( [1,2,3] )求1 2 3的平均值

std()

求标准差
方差:(std())^2

var()

求方差

cov()

求协方差

max()

最大值

min()

最小值

range()

极差:max() - min()

median()

中位数

mode()

众数

矩阵运算

赋值运算符

赋值运算符:=

等号运算符

等号运算符:==
返回值:相等返回 1 ,反之返回 0 。

定义空矩阵

m = []
m 是一个空矩阵。

定义一个m*n的矩阵

m = [ 1 ]
m 为一个一行一列的矩阵,其中的元素为 1 。

m = [ 1 2 3 ]
m = [ 1, 2, 3 ]
m 为一个行矩阵,一行三列。
同一行的元素之间可以用逗号分割也可以使用空格进行分割。

m = [ 1; 2; 3 ]
m为一个列矩阵,三行一列。
不同行之间使用;进行分割。

m = [ 1 2 3; 4 5 6 ]
m 为一个两行三列的矩阵。

使用 冒号运算符 生成矩阵

1 : 10
生成一个一行10列的矩阵

第一个数表示矩阵开始数,第二个数表示矩阵结束的数。默认矩阵中元素的步长为1,即每个元素之间相差1,所以 1 : 10 一共生成1-10的10个数。
默认生成的矩阵为行矩阵。

1 : 0.5 : 10
生成一个1行20列的矩阵。

第一个数表示矩阵的开始,第二个数为步长,第三个数为矩阵的结束。

使用冒号运算符生成矩阵语法

m = 初始值 :步长 :终值
步长默认为1,所以步长为1时可以省略。

使用linspace()生成矩阵

语法:
linspace( 初始值,终值,点数 )
点数默认为100。

m = linspace(1, 10, 10)

矩阵的拼凑和变形

矩阵的拼接

m1 = [ 1 2 3 ];
m2 = [ 4 5 6 ];
m = [ m1 m2 ]
m = [ m1, m2 ]

m 为 m1 m2 进行行拼接的结果矩阵。

m1 = [ 1 2 3 ];
m2 = [ 4 5 6 ];
m = [ m1; m2 ]

m 为 m1 m2 进行列拼接的结果矩阵。

矩阵的变形

语法:
reshape( 矩阵, 要变成的形状 )

m1 = 1:10;
m2 = reshape( m1, [2, 5] )
m2 = reshape( m1, 2, 5 )

将 m1 变成 2行5列的矩阵。

特殊矩阵和随机矩阵

特殊矩阵

单位矩阵

对角线为1的方阵。
eye( n )其中为方阵的阶数。

n = 3;
m = eye( n )

全0矩阵

zeros( n )生成n阶全0的方阵。

n = 3;
m = zeros( n )

zeros( m, n )生成m*n的全0矩阵。
m为行数,n为列数。

m = 2;
n = 3;

res = zeros( m, n )
res = zeros( [m, n] )

全1矩阵

ones( n )

n = 3;

res = ones( n )

ones( m, n )

m = 2;
n = 3;

res = ones( m, n )

三维矩阵

ones( [3, 5, 2] )生成一个三维全1矩阵。
三个数分别对应 [ 行,列,页 ]。

m = ones( 3, 5, 2 )
m = ones( [3, 5, 2] )

随机数矩阵

rand()
m = 3;
n = 5;
% 生成一个n阶的方阵,其中每个元素的取值范围为0-1
rand(n)

% 生成一个m*n的矩阵,其中每个元素的取值范围为0-1
rand( m, n )
rand( [m, n] )

randi()
m = 3;
n = 5;
% 生成一个取值区间在[1,max]的整数
% randi(max)
randi(10)

% 生成一个取值区间在[1,max]的n阶方阵
% randi(max, n)
randi(10, n)

% 生成一个取值区间在[1,max]的m*n矩阵
% randi(max, m, n)
% randi(max, [m, n])
randi( 10, m, n )

randn()

randn()用法同rand()。
服从正态分布。

m = 3;
n = 5;
% 生成一个n阶的方阵
randn(n)

% 生成一个m*n的矩阵
randn( m, n )
randn( [m, n] )

在MATLAB中搜索相关函数用法

有关MATLAB简介与矩阵定义的更多相关文章

  1. ruby - Facter::Util::Uptime:Module 的未定义方法 get_uptime (NoMethodError) - 2

    我正在尝试设置一个puppet节点,但ruby​​gems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由ruby​​gems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby

  2. ruby-on-rails - Rails 3.2.1 中 ActionMailer 中的未定义方法 'default_content_type=' - 2

    我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer

  3. ruby-on-rails - form_for 中不在模型中的自定义字段 - 2

    我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢

  4. ruby - 主要 :Object when running build from sublime 的未定义方法 `require_relative' - 2

    我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby​​1.9+ 关于ruby-主要:Objectwhenrun

  5. ruby - 在 Ruby 中有条件地定义函数 - 2

    我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin

  6. ruby - 定义方法参数的条件 - 2

    我有一个只接受一个参数的方法:defmy_method(number)end如果使用number调用方法,我该如何引发错误??通常,我如何定义方法参数的条件?比如我想在调用的时候报错:my_method(1) 最佳答案 您可以添加guard在函数的开头,如果参数无效则引发异常。例如:defmy_method(number)failArgumentError,"Inputshouldbegreaterthanorequalto2"ifnumbereputse.messageend#=>Inputshouldbegreaterthano

  7. ruby - 如何在 Grape 中定义哈希数组? - 2

    我使用Ember作为我的前端和GrapeAPI来为我的API提供服务。前端发送类似:{"service"=>{"name"=>"Name","duration"=>"30","user"=>nil,"organization"=>"org","category"=>nil,"description"=>"description","disabled"=>true,"color"=>nil,"availabilities"=>[{"day"=>"Saturday","enabled"=>false,"timeSlots"=>[{"startAt"=>"09:00AM","endAt"=>

  8. ruby - 获取模块中定义的所有常量的值 - 2

    我想获取模块中定义的所有常量的值:moduleLettersA='apple'.freezeB='boy'.freezeendconstants给了我常量的名字:Letters.constants(false)#=>[:A,:B]如何获取它们的值的数组,即["apple","boy"]? 最佳答案 为了做到这一点,请使用mapLetters.constants(false).map&Letters.method(:const_get)这将返回["a","b"]第二种方式:Letters.constants(false).map{|c

  9. ruby - 这两个 Ruby 类初始化定义有什么区别? - 2

    我正在阅读一本关于Ruby的书,作者在编写类初始化定义时使用的形式与他在本书前几节中使用的形式略有不同。它看起来像这样:classTicketattr_accessor:venue,:datedefinitialize(venue,date)self.venue=venueself.date=dateendend在本书的前几节中,它的定义如下:classTicketattr_accessor:venue,:datedefinitialize(venue,date)@venue=venue@date=dateendend在第一个示例中使用setter方法与在第二个示例中使用实例变量之间是

  10. ruby-on-rails - 如何生成传递一些自定义参数的 `link_to` URL? - 2

    我正在使用RubyonRails3.0.9,我想生成一个传递一些自定义参数的link_toURL。也就是说,有一个articles_path(www.my_web_site_name.com/articles)我想生成如下内容:link_to'Samplelinktitle',...#HereIshouldimplementthecode#=>'http://www.my_web_site_name.com/articles?param1=value1¶m2=value2&...我如何编写link_to语句“alàRubyonRailsWay”以实现该目的?如果我想通过传递一些

随机推荐