[Matlab]基础教程学习笔记(一):基础和设置和矩阵教程

一、Matlab设置函数。

path:显示搜索路径所包含的所有内容

cd:current direction 查看当前路径

%:添加注释

userpath:显示默认的路径。

示例:userpath('D :\Program Files\MATLAB\R2008a\work');设置该目录为启动目录,参数为路径名;

savepath:保存相应修改

pathtool:界面工具修改相应的搜索路径

clc:命令界面清屏



二:数据操作

who:查看工作空间中的变量名

whos:详细显示工作空间变量名的相关信息

clear:清除工作空间中的所有变量,或者不加参数清除所有变量

save:保存工作空间中的所有变量保存到本地mat文件中。

使用方法:save [文件名][变量名][-append][-ascii]

使用实例(存储数据d):save myMatlab d-append

load:载入mat本地文件名,没有后缀

format:format+格式符,只影响存储,默认是short



三:数据类型

数值型数据

a = 1 ; 建立double类型的数据a。

b = uint8(a) ;将a转换为无符号8位整型

使用class查看当前数据的类型

double函数或者abs函数输出字符a的ASCII码

char函数将ASCII码转换成字符输出

str2num与num2str实现字符串与数值的互换

eval将字符串当成matlab的语句执行


结构体

定义一个结构体:

a.x = 1

a.y = 2

a.z = 3

isstruct判断是否是结构体,如果是返回1。

fieldnames显示结构体的所有成员。

isfiled(a,'x')检查是否是结构体的成员

rmfield删除结构体的成员

getfield获得结构体的成员


单元

使用{}括起建立

a={1,'string',[1,2,3,4]}


三:矩阵的基本操作

矩阵的建立

1)直接新建:

空格和逗号隔开的是同行向量,

A={1 2 3;4 5 6;7 8 9};
B={1 2 3;4 5 6;7 8 9};
C=A';
分号表示不是同行的向量。


2)文件创建:

edit命令新建m文件,运行的话直接输入文件名称即可。


3)特殊矩阵:

零矩阵:zeros(3,4)三行四列的零矩阵。

幺矩阵:ones(3,4)三行四列的幺矩阵。

>> ones(3,4)
ans =

     1     1     1     1
     1     1     1     1
     1     1     1     1




4)冒号表达式建立向量

e1:e2:e3  初始值:步长:终止值

>> 1:2:7

ans =

     1     3     5     7






5)linspace(a,b,n)

a:第一个元素。b:最后一个元素。n:总元素

可以与冒号表达式进行互换

>> linspace(1, 5, 3)

ans =

     1     3     5





矩阵的简单操作

1)索引矩阵:使用下标进行索引。

A(2,3):先行标,后列标。

A(5):返回序列。matlab是用列存储,所以纵向计数。

[m,n]=find(A==8):两个参数则返回行号和列号

ind=find(A==8):一个参数则返回序号

size(A):返回矩阵的大小

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

A =

     1     2     3
     4     5     6
     7     8     9

>>  size(A)

ans =

     3     3





sub2ind(矩阵大小,行标,列表):将m,n这些下表转换成序号

[m,n]=ind2sub(矩阵大小,序号):将序号转换成下表


2)重排矩阵

H=reshape(矩阵A,行数9,列数1)重新排列

>> H=reshape(A,1,9)

H =

     1     4     7     2     5     8     3     6     9


H=A(:);将A矩阵转化成列向量返回


3)矩阵的转置

加一个单引号,行变成列,列变成行。


4)矩阵的拆分

M = A(1,:)第一行的全部元素,冒号代表所有列

M = A(1,1:end)第一行的第一列到最后一列

M = A(1,[1 2 3])第一行的第一列第二列和第三列。

M = A(1,1:3)第一行的第一列第二列和第三列。

M = A([1,2],[1 2])第一行第二行的第一列和第二列。


5)删除矩阵

赋空值即可。

A(2)=[]:删除A矩阵中的第二个元素

A(1,:)=[]:删除A矩阵中的第一行元素




6)扩展矩阵

repmat(A,2,1)复制了两行一列

>> A

A =

     1     2     3
     4     5     6
     7     8     9

>> repmat(A,2,3)

ans =

     1     2     3     1     2     3     1     2     3
     4     5     6     4     5     6     4     5     6
     7     8     9     7     8     9     7     8     9
     1     2     3     1     2     3     1     2     3
     4     5     6     4     5     6     4     5     6
     7     8     9     7     8     9     7     8     9





7)压缩矩阵

将相同元素删除从而实现矩阵压缩:unique(A)




四:特殊矩阵的建立

1)单位矩阵

eye(m,n):创建单位矩阵,一般行数等于列数,即m=n

>> eye(5,5)

ans =

     1     0     0     0     0
     0     1     0     0     0
     0     0     1     0     0
     0     0     0     1     0
     0     0     0     0     1




2)随机矩阵

rand产生0~1的随机矩阵,随机矩阵:S=rand(10,1):

>> S=rand(10,1)

S =

    0.8147
    0.9058
    0.1270
    0.9134
    0.6324
    0.0975
    0.2785
    0.5469
    0.9575
    0.9649




randn产生均值为0方差为1的随机矩阵,随机矩阵:S=randn(1,10):

>> S=randn(1,10)

S =

    0.6715   -1.2075    0.7172    1.6302    0.4889    1.0347    0.7269   -0.3034    0.2939   -0.7873





生成从a到b均匀分布的随机向量可以使用:S = a +(b - a)*rand(m,n):
>> S = 5 + (7 - 4)*rand(5,1)

S =

    5.9513
    7.8507
    5.1033
    6.3162
    6.1447





产生均值为u方差为s的正态分布的随机矩阵:S = u + sqrt(s)*randn(m,n):

>> S = 7 + sqrt(3)*randn(5,1)

S =

    5.0132
    5.1487
    5.5979
    1.9004
    9.4913

可以使用mean和std求均值和方差。


3)魔方矩阵

使用magic(n)生成一个魔方矩阵:

>> magic(5)

ans =

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9




4)Hilbert矩阵

hilb(n)生成Hilbert矩阵:

>> hilb(5)

ans =

    1.0000    0.5000    0.3333    0.2500    0.2000
    0.5000    0.3333    0.2500    0.2000    0.1667
    0.3333    0.2500    0.2000    0.1667    0.1429
    0.2500    0.2000    0.1667    0.1429    0.1250
    0.2000    0.1667    0.1429    0.1250    0.1111

>> format rat
>> ans

ans =

       1              1/2            1/3            1/4            1/5     
       1/2            1/3            1/4            1/5            1/6     
       1/3            1/4            1/5            1/6            1/7     
       1/4            1/5            1/6            1/7            1/8     
       1/5            1/6            1/7            1/8            1/9     






5)Toeplitz矩阵

>> toeplitz(1:6)

ans =

     1     2     3     4     5     6
     2     1     2     3     4     5
     3     2     1     2     3     4
     4     3     2     1     2     3
     5     4     3     2     1     2
     6     5     4     3     2     1




五:矩阵和向量的运算

%%矩阵向量的计算
A = [1 0 0 0;3 1 0 0;-5 2 1 0;7 3 2 1];
B = [1 2 3 4;2 3 4 5;3 4 5 6;4 5 6 7];
k = 3;

C = A + B;
D = k*A;

E = A';
det(E);%求行列式
inv(E);%求逆矩阵



先用det判断行列式,如果行列式不为0再用inv求其逆矩阵。

向量可以看做1*n矩阵或者n*1矩阵,因此向量的加法和数乘等运算和矩阵是一样的。

内积运算:

a = [1 + 5i, 2, 3 + 6i, 7 - 2i];
b = [2 - i, 4 + 3i, 3 - i, 6];
s = sum(conj(b).*a)
s = a*b'      %求解ab内积
s = dot(b, a) %求解ab内积



六:线性方程组求解

%% 线性方程组的求解
A = [1, 2, 3; 1, 4, 9; 1 8 27];
b = [5, -2, 6]';
x = inv(A)*b  %效率不高
x = A\b




七:矩阵的相似化简和分解
%% 矩阵的相似化简和分解
A = [0 3 3; -1 8 6; 2 -14 -10];
jordan(A)
[V J] = jordan(A)

A = [1 0 i; 0 2 0; -i 0 1];
eig(A)
[E D] = eig(A)





八:范数
%% 范数
A = [0 3 3; -1 8 6; 2 -14 -10];
norm(A, 1)
norm(A, 2)
norm(A, inf)
norm(A, 'fro')





九:矩阵分析
%% 矩阵分析
syms x
A = [sin(x) exp(x) 1; cos(x) x^2 + 1 log(x)];
diff(A)
diff(A, 2)

A = [0 1; 0 -2];
expA = funm(A, @exp)
expA = expm(A)
sinA = funm(A, @sin)
cosA = funm(A, @cos)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值