一、开头的建议
-
1、学会使用help()
-
2、sqrt(4) = 根号4,ln =log ,pi = 圆周率
-
3、MATLANB的变量不需要提前定义
-
who,查找有哪些变量
-
whos,有哪些变量,并且变量的具体大小是多少
-
iskeyword,列出关键字,注意避开关键字
-
4、Format,展示变量
-
5、‘>>’,表示调出历史记录
‘;’,表示不显示结果
>> a = 10
a =
10
>> a =10;
>>
二、矩阵
- 1、索引,indexing,从上到下,从左到右,从1开始
- 2、改变矩阵的值,如A(5)=13,改变了第五个元素的值
- 3、等差级数,A=[1:100]表示等差为1,范围1~100,B=[1:2:99],等差为2
- 4、删除行列 A(3,:) = []
- 5、增广矩阵,直接拼接
- 6、矩阵乘AB,矩阵对应位置乘 ‘.’
- 7、常用的matrix function
- max(A),每列的最大值
- sort(A),对整个矩阵的元素进行排序
>> A =[1 2 3;4 5 6;7 8 9] //生成矩阵A
A =
1 2 3
4 5 6
7 8 9
>> A(3) //索引第3个位置的值
ans =
7
>> A(5)=13 //将第5个数换成13
A =
1 2 3
4 13 6
7 8 9
>> A=[1:10]
A =
1 2 3 4 5 6 7 8 9 10
>> B=[1:2:9]
B =
1 3 5 7 9
>> c=[1 2 3;4 5 6;7 8 9]
c =
1 2 3
4 5 6
7 8 9
>> c(3,:)=[] //删除第三行整行
c =
1 2 3
4 5 6
>> d=[1 2 3;11 12 13]
d =
1 2 3
11 12 13
>> [c,d] //c与d的增广矩阵1
ans =
1 2 3 1 2 3
4 5 6 11 12 13
>> [c;d] //c与d的增广矩阵2
ans =
1 2 3
4 5 6
1 2 3
11 12 13
>> e =[2;3]
e =
2
3
>> c.*d //矩阵c与d对应位置相乘
ans =
1 4 9
44 60 78
>> max(c) //矩阵c每一列的最大值
ans =
4 5 6
>> sort(c) //对整个c排序
ans =
1 2 3
4 5 6
>>
三、结构化程序和自定义函数
1、快捷方式
- %,作为注释
- %%,将代码分区块
- debug设置中断点
- 右键“缩排”
2、结构体运算前要把旧的数据先clear ,防止出错
- if switch
- while(用break结束)
a = 10;
if rem(a, 2) == 0
disp('a is even')
else
disp('a is odd')
end
运行:
a is even
switch input_num
case -1
disp('negative 1');
case 0
disp('zero');
case 1
disp('positive 1');
otherwise
disp('other value');
end
n = 1;
while prod(1:n) < 1e100
n = n + 1;
end
for n=1:10
a(n)=2^n;
end
disp(a)
x = 2;
k = 0;
error = inf;
error_threshold = 1e-32;
while error > error_threshold
if k > 100
break
end
x = x - sin(x)/cos(x);
error = abs(x - pi);
k = k + 1;
end
3、pre-allocation,一次宣告空间,可以节约空间
利用tic时间开始、toc时间结束来计时
tic
for ii = 1:2000
for jj = 1:2000
A(ii,jj) = ii + jj;
end
end
toc
运行:
时间已过 0.057937 秒。
比较
tic
A = zeros(2000, 2000);
for ii = 1:size(A,1)
for jj = 1:size(A,2)
A(ii,jj) = ii + jj;
end
end
toc
运行:
时间已过 0.139545 秒。
4、编程技巧
- close all,删除所有变量
- clear all,关闭所有图
- … 表示换行号
A = [1 2 3 4 5 6; ...
6 5 4 3 2 1]
运行:
A =
1 2 3 4 5 6
6 5 4 3 2 1
- control+ c,跳出指令执行
5、function
- edit(which(‘mean.m’))找function文件
- 呼叫function调用 mean()
- nargin 表示input的个数
- nargout 表示output的个数
- varargin,表示input的长度
- varaagout,表示output的长度
function [volume]=pillar(Do,Di,height)
if nargin==2,
height=1;
end
volume=abs(Do.^2-Di.^2).*height*pi/4;
MATLAB变量: string, structure, cell
s1 = 'h'
whos
uint16(s1)
运行;
ans =
uint16
104
一、字符串
s1 = 'Example';
s2 = 'String';
s3 = [s1 s2];
s4 = [s1; s2];
运行;
s1 =
'Example'
s2 =
'String'
s3 =
'ExampleString'
错误使用 vertcat
串联的矩阵的维度不一致。
出错
s4 = [s1;s2]
二、结构体 structure
1、当结构体里有多个对象时的索引
student(2).name = 'Ann Lane';
student(2).id = 'aln4@sfu.ca';
student(2).number = 301078853;
student(2).grade = [95 100 90; 95 82 97; 100 85 100];
2、功能函数
fieldnames(student)
rmfield(student,'id')
三、、cell,array不同类型数据的矩阵
1、用大括号宣告
2、查看内容
- A{1,1} = 内容
- A(1,1)= pointer
- A{1,1}(1,1) 查看{1,1}内容矩阵里的(1,1)位置
3、function
4、多维数组 cell(row,column,layer)
cat()将矩阵在不同方向拼起来
A=[1 2;3 4]
B=[5 6;7 8]
C1=cat(1,A,B)
C2=cat(2,A,B)
C3=cat(3,A,B)
运行:
A =
1 2
3 4
B =
5 6
7 8
C1 =
1 2
3 4
5 6
7 8
C2 =
1 2 5 6
3 4 7 8
C3(:,:,1) =
1 2
3 4
C3(:,:,2) =
5 6
7 8
reshape()改变矩阵形状
A = {'James Bond', [1 2;3 4;5 6]; pi, magic(5)}
C = reshape(A,1,4)
运行:
A =
2×2 cell 数组
'James Bond' [3×2 double]
[3.141592653589793] [5×5 double]
C =
1×4 cell 数组
'James Bond' [3.141592653589793] [3×2 double] [5×5 double]
function
五、File Access,将workspace 的数据存到File里,save()and load()
clear;
a = magic(4);
save mydata1.mat
save mydata2.mat -ascii
load('mydata1.mat')
load('mydata2.mat','-ascii')
从excel上读取数据
Score = xlsread('04Score.xlsx')
Score = xlsread('04Score.xlsx', 'B2:D4')
基础绘图
- plot()
- hold on /hold off ,保持多个图形
- plot(x,y,‘str’),改变绘图的style
- legend(),产生图的介绍
- xlabel()
- ylabel()
- title()
- text()
hold on
plot(cos(0:pi/20:2*pi));
plot(sin(0:pi/20:2*pi));
hold off