我是靠谱客的博主 慈祥皮卡丘,最近开发中收集的这篇文章主要介绍matlab数据类型常用命令:常量运算符变量初始化向量矩阵(数组):子数组向量合并:矩阵合并:数组和矩阵运算运算符的优先级注释:换行:关键字:关系运算符:tic--toc:算术运算符:数据类型:变量定义:matlab中的函数:matlab常见函数给图像增加坐标轴标签,题目和网格线--grid on多图像叠加---hold on  /  hold off关系运算符:分支语句循环结构次方: 函数:end函数微分计算:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

sin根号PI计算:

 sin(3.14^0.5)

ans =

    0.9798

数据类型

matlab的变量不需要声明数据类型

默认类型为double

当一个字符或字符串赋值于一个变量名时,系统会自动建立一
char 型变量。
char str='To disturb you'

常用命令:

查看变量类型命令:

whos

which 命令
它能帮助我们找到正在执行的文件
版本和它的路径。
这个命令的格式是
which filename

查看关键字的命令:

iskeyeword

matlab中的函数可以直接用:

类型转换:

 format long
>> pi

ans =

   3.141592653589793
 

分号----matlab中的分号表示不用显示运算结果

clear---->清除工作空间的所有变量

clc-------->清空命令窗口

常量

这个些预定义值存储在一般的变量中,所以他们能被覆盖或改写。如果一个新值赋值于

其中一个预定义变量,,那么这以后的计算中新值将会替代默认值。

运算符

分号标识不要让结构显示在命令行窗口

变量初始化

有三种方式初始化 MATLAB 中的变 量:
1 .用赋值语句初始化变量
2 .用 input 函数从键盘输入初始化变量
3 .从文件读取一个数据

 

关键字初始化:

input:

1,输入数值型数据----input只需要一个参数

n=input('')

2,输入字符串数据----input需要第二个参数--‘s’

str=input('','s')

向量

a=[1 2 3 ]

寻找向量元素:

向量下标从1开始,不是从0,也不可以是负数

向量一般来描述一维数组,而矩阵往往来描述二维或多维
数组。

 

 行数同列数

矩阵(数组):

数组和矩阵的区别

数组中的元素可以是字符等
矩阵中的只能是数

二者联系主要体现在:在Matlab中,矩阵是以数组的形式存在的。因此,一维数组相当于向量;二维数组相当于矩阵。所以矩阵是数组的子集。

注意:matlab数组的下标是从1开始,不是从0开始

matlab中的矩阵,行元素的分隔符是空格,列的分割是分号,

 a=[1 2;3 4]

a =

     1     2
     3     4

寻找矩阵元素:

1:

a(1,2)//逗号分隔找向量

ans =

     2

2:

 a(2)

ans =

     3

原理:

 3:

arr=[1 2 3;4 5 6;7 8 9]

arr =

     1     2     3
     4     5     6
     7     8     9

>> arr([1 3])

ans =

     1     7

4:

 arr([1 2;2 3])//每一个都是下标,分号是找出来符号的分隔

ans =

     1     4
     4     7

5:

arr =

     1     2     3
     4     5     6
     7     8     9

arr([1 3],[2 3])/前面两个表示向量位置,后面量表示列数,取交叉数

ans =

     2     3
     8     9

矩阵相乘:

  a=[1 2;3 4]

 b=[2 3 4;3 4 5]

a*b

ans =

     8    11    14
    18    25    32

数组元素的访问

小括号,不同于C

MATLAB 的特性之一就是它允许使用者或程序员把一个多维数看作一个一维数组,用一维数组的访问方式访问多维数组的元素,但是一般不用,可能会出现问题

数组中包含数组元素或者表达式

用于初始化数组的表达式可以包括代数符号或事先已经定义好的数组 . 例如赋值语句
a=[0 1+7]
b=[a(2) 7 a]


矩阵元素替换:

指定元素位置,赋值就可以

arr =

     1     2     3
     4     5     6
     7     8     9

>> arr(1,1)=100

arr =

   100     2     3
     4     5     6
     7     8     9
怎么输入一个连续长矩阵:

用分号

b=0:10

b =

     0     1     2     3     4     5     6     7     8     9    10

间隔输出第一位:

g=1:5:20

g =

     1     6    11    16

矩阵的声明和初始化:

A=zeros(10)

A =

     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     0     0

>> 

B=zeros(5,5)

B =

     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0

>> 

子数组

 单独的:在行上,标识获取原数组行数

单独的:在列上,标识获取原数组列数

arr2(:,1:2:3)标识行获取所有行为3,列为1和3列

arr4(1:2,[1 4])=[20 21;22 23]
arr4 =
20 2 3 21
22 6 7 23
9 10 11 12
arr4(1:2,[1 4])什么意思:
1行到2行中的一列和四列
用一标量来给子数组赋值
位于赋值语句的右边的标量值总是能匹配左边数组的形。这个标量值将会被复制到左边
语句中所对应的元素。例如,假设用一个数组 arr4 定义如下:
arr4 = [1 2 3 4;5 6 7 8;9 10 11 12]
下面的表达式将一个值赋值于数组的 4 个元素。
>> arr4(1:2,1:2)=1  %1行到2行中的1列到4列
arr4 =
1 1 3 4
1 1 7 8
9 10 11 12

向量合并:

 a=[1 2 3 4]

a =

     1     2     3     4

>> b=[4 5 6 7]

b =

     4     5     6     7

>> f=[a b]

f =

     1     2     3     4     4     5     6     7

矩阵合并:

 c=[1 2;3 4]

c =

     1     2
     3     4
 
>> d=[12 23;34 43]

d =

    12    23
    34    43

>> h=[c d]

h =

     1     2    12    23
     3     4    34    43

数组和矩阵运算

注意:

数组用于运算数组的行和列必须相同,否则产生错误

矩阵用于运算的行必须相同

运算:

数组加数组:

对应元素对应相加

标量加数组:

标量和每个元素相加

减法运算

减法原理同上

数组乘法

对应元素相乘即可

数组除法

对应元素相除即可

矩阵乘法

原理:

第一个数组决定行,第二个数组决定列,第一个每一行的元素对应乘以第二个的每一列的元素,相加,为一个结果元素

a =

     1     2
     3     4

>> b=[2 3 4;3 4 5]

b =

     2     3     4
     3     4     5

>> a*b

ans =

     8    11    14
    18    25    32

 有点的是数组,没有点的是矩阵

运算符的优先级

注释:

%:单行注释

%%

.......

两个%%下面是代码块

换行:

...

三点是换行

关键字:

input---初始化

关系运算符:

tic--toc:

简单地说,tic和toc是用来记录matlab命令执行的时间

tic用来保存当前时间,而后使用toc来记录程序完成时间。

两者往往结合使用,用法如下:

tic

operations

toc

显示时间单位: 秒
 

算术运算符:


.*”和“*”的区别:

在进行数之间的运算时“.*”和“*”是没有区别的,都是表示普通的乘法运算。例:m = 2,n = 3,m.*n = 6, m*n = 6。

在进行矩阵之间的运算时“.*”和“*”的意义就有所不同了。假设a,b表示两个矩阵,a*b表示矩阵a与矩阵b进行矩阵相乘,a.*b表示矩阵a中的元素与矩阵b中的元素按位置依次相乘,得到的结果将作为新矩阵中相同位置的元素。

*为矩阵乘法,若A为m*n维矩阵,B为n*p维矩阵,则A*B为m*p维矩阵

 

.*为点乘运算,是指两个矩阵中对应元素进行乘法运算。要求两个矩阵维数相同

MATLAB 中用一个特殊的符号来区分矩阵运算和数组运算。在需要区分两者不同的时侯,把点置于符号前来指示这是一个数组运算(例如, .*)。线面给出的是一些常见的数组和矩阵运算。

数组加法:A+B,数组加法和矩阵加法相同。

数组减法:A-­B ,数组减法和矩阵减法相同。

数组乘法:A.*B,A 和 B 的元素逐个对应相乘,两数组之间必须有相同的形,或其中一个是标量。

矩阵乘法:A*B,A 和 B 的矩阵乘法,A 的列数必须和 B 的行数相同。

数组右除法:A./B,A 和 B 的元素逐个对应相除:A(i,j)/B(i,j)两数组之间必须有相同的形,或其中一个是标量。

数组左除法:A.B,A 和 B 的元素逐个对应相除:B(i,j)/A(i,j)两数组之间必须有相同的形,或其中一个是标量。

矩阵右除法:A/B 矩阵除法,等价于 A*inv(B), inv(B)是 B 的逆阵。

矩阵左除法:AB 矩阵除法,等价于 inv(B)*A, inv(A)是 A 的逆阵。

数组指数运算:A.^B,AB中的元素逐个进行如下运算:A(i,j)^B(i,j),A(i,j)/B(i,j)两数组之间必须有相同的形,或其中一个是标量。
 

数据类型:

字符串和字符都是单引号括起来

默认类为doblue

字符串相加:

 s1='aaaaaa'

s1 =

aaaaaa

>> s2='bbbbb'

s2 =

bbbbb

>> s3=[s1 s2]

s3 =

aaaaaabbbbb

>> 

s4=[s1;s2]
错误使用 vertcat
串联的矩阵的维度不一致。
 
>> s5='ccccc'

s5 =

ccccc

>> s4=[s2;s5]

s4 =

bbbbb
ccccc

>> 

字符串中找元素:

s1(1)

ans =

a

变量定义:

利用sym或者syms定义一个变量

sym方式定义:x=sym('x')

syms方式定义:syms x

定义了变量(自变量)之后,就可以直接利用自变量直接定义函数

y=x^2+x+1

matlab中的函数:

画图

画表达式:y=x^2-10*x+15的函数

定义域:

x=0:1:10

Y值:

y=x.^2-10*x+15

输出图像函数:

plot(x,y)

matlab常见函数

给图像增加坐标轴标签,题目和网格线--grid on

给图增加标题和坐标轴标签将会用到 title, xlabel, ylable 函数。调用每个函数时将会有一
个字符串,这个字符串包含了图象标题和坐标轴标签的信息。用 grid 命令可使网格线出现
或消失在图象中, grid on 代表在图象中出现网格线, grid off 代表去除网格线。

x=0:1:10; 
y=x.^2-10*x+15; 
plot(x,y); 
title ('Plot of y=x.^2-10*x+15'); 
xlabel ('x'); 
ylabel ('y'); 
grid on;

同一坐标内作多个函数图像

一个x,多个y,plot中有几组图像就设置几组x,y

x=0:1:10;
y1=x.^2-10*x+15;
y2=sin(2*x);
y3=3*cos(2*x);
plot(x,y1,x,y2,x,y3)
title('y-x');
xlabel('x');
ylabel('y');
grid on

多图像叠加---hold on  /  hold off

在一般情况下,创建一个新的图象就要用到一个 plot 命令,前面的数据就会自动消失。
这种行为可以通过使用 hold 命令得到修改。当 hold on 命令执行后,所有的新的图象都会叠
加在原来存在的图象。 hold off 命令可恢复默认情况,用新的图象来替代原来的图象。
例如,在同一坐标轴内的画出 sinx cosx 的图象。产生的图象如图 3.4 所示。
x = -pi:pi/20:pi;
y1 = sin(x);
y2 = cos(x);
plot(x,y1,'b-');
hold on;
plot(x,y2,'k--');
hold off;
legend ('sin x','cos x');

关系运算符:

注意:

=:是赋值运算符

==:是等于运算符

也要注意不等于运算符 ,不同于其他补充语言

逻辑运算符

 

逻辑函数

 

 

分支语句

 

注意:这些关键字的后面的条件语句没有括号

还要注意for,if和while都是最后以end结尾

matlab的输出函数:

disp()

注意:matlab中的字符串是单引号括起来 

if

1:elseif是连续的,不分开

2:每一个语句块都不用括号阔来,只需要对其

3:注意所有的对齐,比如最后的end如果是和最后的语句块对齐,那就属于语句,就不是IF的结束了

4:if语句可以嵌套,但是每一层的if都要有end结束

a=1;
b=2;
c=3;
if a<b
    a=a+b;
    a
elseif a<c
        a=a+c;
        a
else a
end

循环结构

while

while expression 
... 
... code block 
... 
end

for循环:

 注意n不用++,因为:就已经指定了变量从哪里到哪里

variable的值有几个就执行循环体几次

给Variable赋值的形式:

for ii = 1:10 %执行10次
 Statement 1 
 ... 
 Statement n 
end 


for ii = 1:2:10 
 Statement 1 
 ... 
 Statement n 
end 
%执行5次

for ii = [5 9 7] 
 Statement 1 
 ... 
 Statementn 
end 
%数组中的元素有三个,所以会被执行3次

variable的值不要轻易修改

variable的值是每一次循环赋给它的值

for循环也可以进行嵌套

次方:

1e100:

是1乘与1的100次方

2的10次方字母表示:

2^10

switch语句:

特点:

1,switc之后有括号

2,”case 语句“后面的逗号要不要都可以

3,otherwise后面也可以直接加逗号

switch的第一种形式:

一个case 对应一个值

a=10;

switch(a)
    case 10
        disp('10');
    case 100
        disp('100');
    case 1000
        disp('1000');
    otherwise
        disp(a);
end

一个case对应多个值:

a=10;

switch(a)
    case {10,100},
        disp('10~100');
    case 100
        disp('1000');
    case 1000
        disp('10000');
    otherwise
        disp(a);
end

break和continue

matlab中也可以使用break和continue,作用和其他语言一样

try...catch

用于捕捉MATLAB程序的错误

当程序运行到 try/catch 语句块,在 try 语句块中的一些语句将会被执行。如果没有错误
出现, catch 语句块将会被跳过。另一方面,如果错误发生在一个 try 语句块,那么程序将中
止执行 try 语句块,并立即执行 catch 语句块。
注意:被捕捉的错误一定在try语句块中

 函数:

输出函数

输出字符串函数

disp('要输出的字符串');

eg:

a=1;
b=2;
c=3;
if a<b
    a=a+b;
    disp('b is the most.');
elseif a<c
        a=a+c;
        disp('c is the most.');
else disp('a is the most');
end

函数表示:

q(n)=......

q(x,y)=x+y

函数定义(自定义函数):

这个不是定义函数表达式

首先创建一个m文件;

Matlab函数定义格式,用关键字function定义函数

 

function [输出变量] = 函数名称(输入变量)

eg:

function [ result ] = test(a,b)
result=a+b;
end
”,其中test是函数名,result 是返回结果,a和b是输入参数,

end函数

返回数组下标最大值

eye(a,b)

建立一个数组,a行b列,对角为1

solve(y,x);

解方程

也可以用来解方程组

syms x y %注意,变量之间的间隔用空格
eq1=4*x^2+x;%不显示要用冒号
eq2=2*x^2+4*x+1;
A=solve(eq1,eq2,y,x)

A.x

A.y

微分计算:

step()

1,step(分子矩阵,分母矩阵)

2, 

功能:显示函数的图像(求系统的单位冲激响应)

eg:

1,

num=[12];
den=[1 2 10];
step(num,den)

2,

num=[12];
den=[1 2 10];
g=tf(num,den);
step(g)

可以获取step的返回值

[u,t]=step(g)

[y,x]=max(u)

impulse

功能:求系统的单位阶跃响应

sys = tf([2, 1],[1, 4, 3]);
t = 0:0.1:10;
y = impulse(sys, t);
plot(t, y);

max()

Matlab中max函数在矩阵中求函数大小的实例如下:
(1)C = max(A)
返回一个数组各不同维中的最大元素。
如果A是一个向量,max(A)返回A中的最大元素。
如果A是一个矩阵,max(A)将A的每一列作为一个向量,返回一个行向量,向量的第i个元素是矩阵A的第i列上的最大值。


如果A是多维数组,max(A) treats the values along the first non-singleton dimension as vectors, returning the maximum value of each vector.
(2)[Y,U]=max(A):返回行向量Y和U,Y向量记录A的每列的最大值,U向量记录每列最大值的行号。
(3)max(A,[],dim):返回A中有dim指定的维数范围中的最大值。
dim取1或2。
dim取1时,[Y,I]=max(M,[],1), 在第1维方向上取最大值,也就是每列最大值,结果存在Y里,I里存的是每列最大值的行位置。
该函数和max(A)完全相同;


dim取2时,[Y,I]=max(M,[],2), 在第2维方向上取最大值,也就是每行最大值,结果存在Y里,I里存的是每行最大值的列位置。
该函数返回一个列向量,其第i个元素是A矩阵的第i行上的最大值。


求最小值的函数是min,其用法和max完全相同。

dcgain();

dcgain()函数用来求系统的终值

steadyErr=dcgain(g)

最后

以上就是慈祥皮卡丘为你收集整理的matlab数据类型常用命令:常量运算符变量初始化向量矩阵(数组):子数组向量合并:矩阵合并:数组和矩阵运算运算符的优先级注释:换行:关键字:关系运算符:tic--toc:算术运算符:数据类型:变量定义:matlab中的函数:matlab常见函数给图像增加坐标轴标签,题目和网格线--grid on多图像叠加---hold on  /  hold off关系运算符:分支语句循环结构次方: 函数:end函数微分计算:的全部内容,希望文章能够帮你解决matlab数据类型常用命令:常量运算符变量初始化向量矩阵(数组):子数组向量合并:矩阵合并:数组和矩阵运算运算符的优先级注释:换行:关键字:关系运算符:tic--toc:算术运算符:数据类型:变量定义:matlab中的函数:matlab常见函数给图像增加坐标轴标签,题目和网格线--grid on多图像叠加---hold on  /  hold off关系运算符:分支语句循环结构次方: 函数:end函数微分计算:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部