Matlab数值计算
来源:互联网 发布:日系文艺男装淘宝店铺 编辑:程序博客网 时间:2024/05/16 15:19
统计函数
sum(A)求和
如果A是向量,sum(A)计算每个元素之和
如果A是矩阵,sum(A)计算每列元素之和,(即把每列看成一个向量,然会返回一个行向量,结果为每列元素之和)
如果A是多维数组,sum(A,dim)把指定的维度对应位置求和,即dim=1时对列求和,dim=2时对列求和,以次类推
B = sum(..., 'double')和B = sum(..., dim,'double')这个用于指定计算精度,强制使返回类型为双精度
B = sum(..., 'native')和B = sum(..., dim,'native')这个用于指定计算精度,强制使返回类型精度与右边一致
上面如果不指定精度'double'或者'natvie',如果A是整数类型,默认返回双精度,如果A是单精度类型或者双精度类型,默认返回单精度或者双精度
例 1+2+...+100
clearclcA=1:100;sum(A)结果
ans = 5050例
clearclcA=magic(3)sum(A)sum(sum(A))结果
A = 8 1 6 3 5 7 4 9 2ans = 15 15 15ans = 45
例
clearclcA=magic(4)sum(A,1)sum(A,2)结果
A = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1ans = 34 34 34 34ans = 34 34 34 34例 多维向量
clearclcA(:,:,1)=[1 0 2 5;4 1 8 7;3 2 6 3];A(:,:,2)=[3 5 4 1;2 6 2 1;4 2 3 0];Asum(A,1)sum(A,2)sum(A,3)结果
A(:,:,2) = 3 5 4 1 2 6 2 1 4 2 3 0ans(:,:,1) = 8 3 16 15ans(:,:,2) = 9 13 9 2ans(:,:,1) = 8 20 14ans(:,:,2) = 13 11 9ans = 4 5 6 6 6 7 10 8 7 4 9 3例 精度
clearclcA=int8(1:20)B=sum(A) %A是整数类型,不指定精度时,默认返回双精度,结果正确C=sum(A,'native') %因为A是8位整数类型,精度设置为native,所以结果精度为int8(8位整数类型),int8的整数范围为-128~127,超过范围则截断,所以结果为127class(B) %查看B的数据类型class(C) %查看C的数据类型结果
A = Columns 1 through 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Columns 17 through 20 17 18 19 20B = 210C = 127ans =doubleans =int8mean(A) 求平均值,参数与sum 差不多,但是mean不能指定精度
如果A是向量,mean(A)计算A所有元素的平均值
如果A是矩阵,mean(A)计算每列元素的平均值,(即把每列看成一个向量,然会返回一个行向量,结果为每列元素的平均值)
如果A是多维数组,sum(A,dim)把指定的维度对应位置求的平均值,即dim=1时对列求的平均值,dim=2时对列求的平均值,以次类推
例
clearclc%对向量求平均A=1:100;mean(A)%对矩阵求平均B=magic(4)mean(B)%对多维向量求平均C(:,:,1)=[3 5 8 6;3 7 9 4;3 4 12 14];C(:,:,2)=[2 7 4 3;6 3 10 4;10 7 9 4];Cmean(C,1)mean(C,2)mean(C,3)结果
ans = 8.5000 8.5000 8.5000 8.5000C(:,:,1) = 3 5 8 6 3 7 9 4 3 4 12 14C(:,:,2) = 2 7 4 3 6 3 10 4 10 7 9 4ans(:,:,1) = 3.0000 5.3333 9.6667 8.0000ans(:,:,2) = 6.0000 5.6667 7.6667 3.6667ans(:,:,1) = 5.5000 5.7500 8.2500ans(:,:,2) = 4.0000 5.7500 7.5000ans = 2.5000 6.0000 6.0000 4.5000 4.5000 5.0000 9.5000 4.0000 6.5000 5.5000 10.5000 9.0000
median 求中位数 min 求最小值 max 求最大值
prod 连乘积 sort 排序
这几个使用的参数和方法基本与mean求平均数一致
sort默认按升序排列,不过它也可以通过参数指定按升序还是降序排列
sort(X,DIM,MODE),DIM不指定默认是1,MODE取值为'ascend'时,按升序排列(默认),MODE取值为'descend'时,按降序排列
例
clearclcA=[11 6 9 1 1 8 12 14 2 9];sort(A,'ascend')sort(A,'descend')结果
ans = 1 1 2 6 8 9 9 11 12 14ans = 14 12 11 9 9 8 6 2 1 1降序的另一种做法是 逆序输出
clearclcA=[11 6 9 1 1 8 12 14 2 9];B=sort(A)C=B(end:-1:1)结果
B = 1 1 2 6 8 9 9 11 12 14C = 14 12 11 9 9 8 6 2 1 1
离差和相关
var(X) 求X的方差
std(X) 求X的标准差
range(X) 求X的极差
cov(X) 求X的协方差阵
cov(X,Y) 求X、Y两个矩阵的协方差
corrcoef(X) 求X的自相关阵
corrcoef(X,Y) 求X、Y的互相关系数,结果为方阵
corr2(X,Y) 求X、Y的相关系数
例
clearclcA=randn(5,5) %生成5×5的标准正态分布(均值为0,方差为1)的随机数矩阵B=var(A) %求A的方差B2=var(A(:)) %求A所有数的方差C=std(A) %求A的标准差C2=std(A(:)) %求A所有数的标准差D=range(A) %求A的极差E=cov(A) %求A的协方差阵F=corrcoef(A) %求A的自相关阵结果
A = 1.6035 -0.1559 -1.2507 0.0125 0.9337 1.2347 0.2761 -0.9480 -3.0292 0.3503 -0.2296 -0.2612 -0.7411 -0.4570 -0.0290 -1.5062 0.4434 -0.5078 1.2424 0.1825 -0.4446 0.3919 -0.3206 -1.0667 -1.5651B = 1.6320 0.1056 0.1332 2.4728 0.8687B2 = 1.0286C = 1.2775 0.3250 0.3650 1.5725 0.9320C2 = 1.0142D = 3.1096 0.7046 0.9301 4.2716 2.4988E = 1.6320 -0.1957 -0.4006 -1.1446 0.5936 -0.1957 0.1056 0.0748 -0.0320 -0.1390 -0.4006 0.0748 0.1332 0.1051 -0.2914 -1.1446 -0.0320 0.1051 2.4728 0.1939 0.5936 -0.1390 -0.2914 0.1939 0.8687F = 1.0000 -0.4713 -0.8592 -0.5698 0.4985 -0.4713 1.0000 0.6307 -0.0626 -0.4589 -0.8592 0.6307 1.0000 0.1830 -0.8564 -0.5698 -0.0626 0.1830 1.0000 0.1323 0.4985 -0.4589 -0.8564 0.1323 1.0000
多项式计算
定义多项式
P=[a1 a2 ... an an+1]
Y = P(1)*X^N + P(2)*X^(N-1) + ... + P(N)*X + P(N+1)
即
Y = a1*X^N + a2*X^(N-1) + ... + an*X + an+1
poly 求特征多项式
poly(A) 当A是一个N*N矩阵式,poly(A)命令求出A的特征多项式,det(lambda*eye(size(A))-A)
poly(V) 当V是向量时,命令poly(V)生成以V为根的多项式
root 求多项式的根
root(p)
例
clearclcA=[1 2 3;4 5 6;7 8 0];p=poly(A) %求特征多项式|λE-A|r=roots(p) %根据上面的特征多项式,求特征值结果
p = 1.0000 -6.0000 -72.0000 -27.0000r = 12.1229 -5.7345 -0.3884手算过程
例
clearclcA=[1 2 3];p=poly(A)结果
p = 1 -6 11 -6手算过程
帮助文档所给的求特征多项式|λE-A|的算法
n = length(A)z = eig(A); %求矩阵A的全部特征值,构成向量zc = zeros(n+1,1); c(1) = 1;for j = 1:n c(2:j+1) = c(2:j+1)-z(j)*c(1:j);end
polyval 多项式求值
polyval(P,X) P为多项式,X可为向量或矩阵,为向量时,结果为向量,为m×n矩阵时,对每一个元素求值,结果仍然为m×n矩阵
例 p(x) = 3x^2+2x+1 at x = 5,7, and 9:
clearclc p=[3 2 1];polyval(p,[5 7 9])结果
ans = 86 162 262例 p(x) = 4x^2+4x+1 at x = [2 3 4;5 6 7]:
clearclcp=[4 4 1];polyval(p,[2 3 4;5 6 7])结果
ans = 25 49 81 121 169 225conv 多项式乘法
conv(P1,P2) 多项式P1和多项式P2相乘
deconv 多项式除法
[Q,R]=deconv(P1,P2) 多项式P1和多项式P2相除,Q为商,R为余数
polyder 多项式求导
polyder(P) 多项式P的导函数
polyder(P1,P2) 多项式P1和多项式P2相乘后求导,相当于polyder(conv(P1,P2))
[Q,D]=polyder(P1,P2) 多项式分式P1/P2(即P1为分子,P2为分母)求导,结果仍为分式Q/D(即Q为分子,D为分母)
例 u=x^3+2x^2+3x+4,v=10x^2+20x+30,求c=u*v,c/u
clearclcu=[1 2 3 4];v=[10 20 30];c=conv(u,v)[q,r]=deconv(c,u)结果
c = 10 40 100 160 170 120q = 10 20 30r = 0 0 0 0 0 0
例 a=3x^2+6x+9,b=x^2+2x,求a*b的导数
clearclca=[3 6 9];b=[1 2 0];k=polyder(a,b)结果
k = 12 36 42 18
函数极值与零点
fminbnd 求极值
X = fminbnd(FUN,x1,x2) 对函数值FUN求极小值,x1,x2表示区间, x1 < X < x2
如果要求极大值可以先取导数
例
clearclcX1 = fminbnd(@cos,3,4)X2 = fminbnd(@(x) sin(x)+3,2,5)f = @(x,c) (x-c).^2;c = 1.5;X3 = fminbnd(@(x) f(x,c),0,1)结果
X1 = 3.1416X2 = 4.7124X3 = 0.9999
fzero 求零点
X = fzero(FUN,X0) 求函数FUN的零点,X0为初值,FUN函数可以使用@
例
clearclcX1 = fzero(@sin,3) % 函数为sin x,初值为3X2 = fzero(@(x) sin(3*x),2) % 函数为sin 3x,初值为2f = @(x,c) cos(c.*x); % 定义带参数的函数c = 2; % 设置参数的值X3 = fzero(@(x) f(x,c),0.1)X4 = fzero ('x.^3-2.^x+1',-1) % 函数为x^3-2^x+1,初值为-1结果
X1 = 3.1416X2 = 2.0944X3 = 0.7854X4 = -0.7368
- MATlAB数值计算功能
- Matlab数值计算
- matlab#2数值计算
- Matlab数值计算
- MATLAB之数值计算
- matlab入门---数值计算
- matlab学习笔记 数值计算
- Matlab基本数值计算功能
- Matlab 数值计算泰勒公式
- Matlab 数值计算----牛顿迭代法
- MATLAB 数值计算练习代码
- Matlab学习笔记--数值计算
- Chapter 6. MATLAB数值计算基础
- matlab基础学习——数值计算
- matlab学习笔记--数值计算
- MATLAB基础学习----数值的计算(1)
- Matlab 数值计算----二分法求非线性方程组
- Matlab 数值计算----斯特芬森加速迭代法
- Android中图片适配屏幕问题
- cuda编程实践-2
- onNewIntent何时会被执行 以及 Android任务和返回栈解析
- 使用API将AR收款不明入金转为未核销状态
- PHP 多维数组
- Matlab数值计算
- oracle 两表之间字段赋值错误解析
- table表格简单样式设置
- jqGrid学习总结_1 获取或设置行及单元格的值
- caffe 训练测试自己的数据集
- Check Memory Leak
- easyui datagrid的二次加载问题 来自于网络方便自己以后查找
- mysql 用户管理和权限设置
- 自定义progressdialog——带倒计时的progressbar效果