您的位置:首页 > 编程语言 > MATLAB

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

2012-11-18 17:20 676 查看
一、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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: