1、pi = 3.1416
2、指数函数:x = 1:10 ; exp(x)
3、平方根:sqrt ( afr_HR(w)^2 + afr_HI(w)^2 )
平方:数组平方时。需要 .^2
4、画图:
(1)、title ()
title(num2str(lenRvp)); %变量名作为图的标题
title(['a=',num2str(a),'。'])
(2)、figure用于生成一个图窗,可单独使用,而hold on是先用figure生成一个图窗后,要把多个数据画进去的时候才用的,且只用在figure后面,若不画多个数据时则不加hold on,因此,hold on不能单独使用
5、arg min f(x,t)
arg是元素(变元)的英文缩写。
arg min 就是使后面这个式子达到最小值时的x,t的取值
arg max 就是使后面这个式子达到最大值时的x,t的取值
6、记录程序运行时间 的函数 tic、toc
7、巧用TAB键,进行输入补全操作
8、热键F9 运行选中的代码
9、热键F5 运行脚本中所有的代码
10、取余:
rem(n,m)或mod(n,m) : n/m的余数 mod模数求余 rem 求余数
11、while、for、if
for i = 1:qrsdatasdirnums
while (j <= count)
qrsdatas(m , n) = f(j);
if rem(j,170) == 0
m = m+1;
n = 1;
end
end
end
12、删除一行或者一列数据
a=[1,2,2;3,4,4;2,4,4]; a(1,:)=[ ];表示删除第一行a(:,1)=[ ];表示删除第一列
13、
a.向零取整(截尾取整)
fix-向零取整(Round towards zero);
>> fix(3.6)
ans =
3
b.向负无穷取整(不超过x 的最大整数-高斯取整)
floor-向负无穷取整(Round towards minus infinity);
>> floor(-3.6)
ans =
-4
c.向正无穷取整(大于x 的最小整数)
ceil-向正无穷取整(Round towards plus infinity);
>> ceil(-3.6)
ans =
-3
d.向最近整数取整,四舍五入(四舍五入取整)
round-向最近整数取整,四舍五入(Round towards nearest integer);
>> round(3.5)
ans =
4
14、数组长度可变
Rdiff = [];
for i = 1:200
Rdiff = [Rdiff;diff_s(i),label(i)];
end
15、归一化
>> [y,ps] = mapminmax(a)
y =
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5
ps =
name: 'mapminmax'
xrows: 5
xmax: [5x1 double]
xmin: [5x1 double]
xrange: [5x1 double]
yrows: 5
ymax: 1
ymin: -1
yrange: 2
no_change: 0
>> [y,ps] = mapminmax(a')
y =
-1.0000 -0.5000 0 0.5000 1.0000
-1.0000 -0.5000 0 0.5000 1.0000
-1.0000 -0.5000 0 0.5000 1.0000
-1.0000 -0.5000 0 0.5000 1.0000
ps =
name: 'mapminmax'
xrows: 4
xmax: [4x1 double]
xmin: [4x1 double]
xrange: [4x1 double]
yrows: 4
ymax: 1
ymin: -1
yrange: 2
no_change: 0
对行向量的数据进行归一化处理
反归一化:
[ap,ps] = mapminmax(y, ps)
16、size函数
size(a,1)求矩阵的行数
size(a,2)求矩阵的列数,相当于length(a)
size(a)同时求矩阵的行和列数
17、打乱数组的顺序
(1)打乱二维数组的行顺序
size = size(A,1);
A(randperm(size), :) = A(1:1:size, :);
(1)打乱以维数组的列顺序
size = size(A,2);
A(randperm(size)) = A(1:1:size);
18、数组连接
假如Inc与 Qnc是两个已知的一维数组,用下面的语句就可以实现你说的要求。 xn=[Inc Qnc]; xn为Inc 与Qnc的首尾相连的数组了。可以参考matlab基础相关书籍
19、eval()函数
eval()函数的功能就是将括号内的字符串视为语句并运行 比如 eval('y1=sin(2)')和语句y1=sin(2)等价 多在循环中使用,可以对多个名字有规则的变量或文件进行操作,比如 for x=1:5 eval(['y',num2str(x),'=',num2str(x^2),';']) end
20、均值mean
mean(X,1)为列向量的均值;mean(X,2)为行向量的均值;mean(mean(X))为整个矩阵的均值。
21、均方差
Matlab中有求数组方差的 函数:var;要注意的是var函数所采用公式中,分母不是length(X) ,而是length(X)-1 。
这是因为var函数实际上求的并不是方差,而是误差理论中“有限次测量数据的标准偏差的估计值”。
var没有求矩阵的方差功能,可使用std先求均方差,再平方得到方差。std,均方差,std(X,0,1)求列向量方差,std(X,0,2)求行向量方差。
eg:
>>X=[1,2,3,4]
>>var(X)=1.6667
>> sum((X(1,:)-mean(X)).^2)/length(X)=1.2500
>> sum((X(1,:)-mean(X)).^2)/(length(X)-1)=1.6667
22、标准差即均方差。标准差的平方即为 方差,而协方差矩阵中的对角元素即为方差。
23、cov 协方差函数
http://www.cnblogs.com/chaosimple/p/3182157.html
协方差矩阵计算的是不同维度之间的协方差,而不是不同样本之间的。
cov(x)是对x的列进行协方差计算。
24、矩阵的特征值、特征向量
(1) E=eig(A):求矩阵A的全部特征值,构成向量E。
(2) [V,D]=eig(A):求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。
25、排序sort
sort函数的调用格式:
sort(X) 功能:返回对向量X中的元素按列升序排列的新向量。
[Y, I] = sort(A, dim, mode) 功能:对矩阵A的各列或各行重新排序,I记录Y中的元素在排序前A中位置,其中dim指明读A的列还是行进行排序。
若dim=1,则按列排序;若dim=2,则按行排序。mode为排序的方式,取值'ascend'为升序,'descend'为降序。
在主成分分析中,需要特征值从大到小排列,可以使用下列方式实现:
X = VDV^(-1); 所以可以这样 [V,D] = eig(X); [Y,I] = sort(diag(D),'descend') % 降序,默认的是升序 V = V(:,I) |
26,求和sum
27、求最大值max
C = max(A)
返回一个数组各不同维中的最大元素。
如果A是一个向量,max(A)返回A中的最大元素。
如果A是一个矩阵,max(A)将A的每一列作为一个向量,返回一行向量包含了每一列的最大元素。
C = max(A,[ ],dim)
返回A中有dim指定的维数范围中的最大值,1是对每列的数据求最大值,2是对每行的数据求最大值。
[val, loc] = max(A,[ ],dim)
返回A中有dim指定的维数范围中的最大值val及其位置loc,1是对每列的数据求最大值,2是对每行的数据求最大值。
28、find 函数
>> class1=2
class1 =
2
>> class2=3
class2 =
3
>> y=[1 1 1 2 2 2 2 4 4 4 4 4]
y =
Columns 1 through 11
1 1 1 2 2 2 2 4 4 4 4
Column 12
4
>> y==class1
ans =
Columns 1 through 11
0 0 0 1 1 1 1 0 0 0 0
Column 12
0
>> y==class2
ans =
Columns 1 through 11
0 0 0 0 0 0 0 0 0 0 0
Column 12
0
>> y==class1 | y==class2
ans =
Columns 1 through 10
0 0 0 1 1 1 1 0 0 0
Columns 11 through 12
0 0
>> find ( y==class1 | y==class2)
ans =RandIndex = randperm( length( a ) ); % 随即打乱数组索引
a = a( RandIndex ); % 用新的索引构造打乱后的数组
二维的数据打乱行序:
RandIndex = randperm( size( a,1 ) ); % 随机的行序
a1 = a1( RandIndex,: ); % 用新的索引构造打乱后的数组
4 5 6 7
[row,col V] = find(X, ...) 查询满足一定条件的元素的行和列
row 返回满足条件的元素行的位置
col 返回满足条件的元素的列的位置
V 如果X是一个逻辑表达式,则返回一个逻辑数组,一般如果存在满足要求的元素,则返回一个单位列向量。如果不存在满足要求的元素,则返回一个空向量
29、打乱顺序
RandIndex = randperm( length( a ) ); % 随即打乱数组索引
a = a( RandIndex ); % 用新的索引构造打乱后的数组
二维的数据打乱行序:
RandIndex = randperm( size( a,1 ) ); % 随机的行序
a1 = a1( RandIndex,: ); % 用新的索引构造打乱后的数组
30、输出到文件中转行
matlab写入文件时如何换行,真是个麻烦问题?见下面一个例子就解决了,注意打开文件时的参数是'wt',
path='test.txt';
f=fopen(path,'wt');
fprintf(f,'%s\n','test1');
fprintf(f,'%s','test2');
fclose(f);
31、复数的运算
s11=0.761*exp(-151*pi*i/180)
s11 =
-0.6656 - 0.3689i
需要前面的运算中没有定义 变量 i ,clear清除。
(1)表示
x1=-1+i%实部虚部形式
x2=sqrt(2)*exp(i*(3*pi/4))%复指数形式
(2)取实部、虚部
(3)求复数的模求复数的模,应用abs()
(4)求共轭复数
conj()
32、MATLAB并行计算 parallel
如果是四核的,进行多核运算前:
matlabpool local 4;
多核运算完以后,要关闭多核运算:
matlabpool close;
33、& 与 &&
& 按位与:
15二进制: (0000 1111)
127二进制: (1111 1111)
按位与自然就是(0000 1111)=15
&&逻辑与: 即为and;
具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str != null && !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException