酒店网站建设设计,wordpress找回密码邮件,云闪付小程序开发平台,设计师看什么网站MATLAB安装参考#xff1a;抖音-记录美好生活 MATLAB基础知识学习参考#xff1a;【1小时Matlab速成教程-哔哩哔哩】 https://b23.tv/CnvHtO3 第1部分#xff1a;变量定义和基本运算
生成矩阵#xff1a;
% 生成矩阵% 直接法% ,表示行 ;表示列 a [1,2,3;4,5,6;7,8,9];%… MATLAB安装参考抖音-记录美好生活 MATLAB基础知识学习参考【1小时Matlab速成教程-哔哩哔哩】 https://b23.tv/CnvHtO3 第1部分变量定义和基本运算
生成矩阵
% 生成矩阵% 直接法% ,表示行 ;表示列 a [1,2,3;4,5,6;7,8,9];% 冒号一维矩阵 a 开始步长结束步长为1可省略b 1:1:10; % 1,2,...10b 1:10; % 与上一个等价% 函数生成% linspace(开始结束元素个数)等差生成指定元素数的一维矩阵省略个数则生成100个c linspace(0,10,5); % 在0和10之间生成等间距的5个元素% 特殊矩阵% eye(维数)单位阵 4*4e eye(4); % zeros(维数)全零阵 1*4z zeros(1,4);% ones(维数)全1阵 4*1 o ones(4,1);% rand(维数)0~1分布随机阵 r rand(4); % randn(维数)0均值Gaussian分布随机阵 rn randn(4);
矩阵运算
% 矩阵运算% diag(行向量主对角线上方第k条斜线)用行向量生成对角阵diag_a diag(a,1);% tril(矩阵主对角线上方第k条斜线)生成矩阵的下三角阵triu上三角阵 tril_a tril(a,1);% 加、减、乘、乘方矩阵运算a*a% 点运算% a.*b , a./b , a.\b , a.^b 对应元素的*,/,\,^运算% 点乘运算保证矩阵维数相等a.*a% 逆矩阵% 伪逆矩阵当a不是方阵求广义逆矩阵当a是可逆方阵结果与逆矩阵相同% 直接通过MatLab得到线性方程的解pinv(a) % 特征值特征向量[v,D] eig(a); % 输出v为特征向量D为特征值对角阵% *行列式det(a)% *秩rank(a)% *伴随compan(b) 矩阵的修改
在Matlab中矩阵存储一般是列优先的
% 矩阵的修改%部分替换chg_a a;chg_a(2,3) 4; % (行列)元素替换chg_a(1,:) [2,2,2]; % (行,:)替换行为[]删除该行chg_a(:,1) []; % (:,列)替换列为[]删除该列% 转置T_a a;% 指定维数拼接c1_a cat(1,a,a); % 垂直拼接c2_a cat(2,a,a); % 水平拼接% *变维rs_a reshape(a,1,9); % 元素个数不变矩阵变为m*n
信息获取
常用len_a来获取行和列中的最大值
% 信息获取% 矩阵的行列数[row_a, col_a] size(a); % [行数列数]% 行列中最大的len_a length(a);
多维数组
cat在matlab中是常用的一种拼接方式这里cat中的”3“指的是按三维将两个矩阵进行拼接
% 多维数组% 创建% 直接法mul_1(:,:,1) [1,2,3;2,3,4];mul_1(:,:,2) [3,4,5;4,5,6];% *扩展法mul_2 [1,2,3;2,3,4];mul_2(:,:,2) [3,4,5;4,5,6]; % 若不赋值第一页第一页全为0% cat法mul_31 [1,2,3;2,3,4];mul_32 [3,4,5;4,5,6];mul_3 cat(3,mul_31,mul_32); % 把a1a2按照“3”维连接
字符串
字符串在matlab中并不常用但后续的__2__函数中可能会将字符串转化为其他形式或将其他形式转化为字符串的形式
% *字符串% 创建str0 hello world; % 单引号引起str1 Im a student; % 字符串中单引号写两遍str3 [Ia student]; % 方括号链接多字符串str4 strcat(str0, str1); % strcat连接字符串函数str5 strvcat(str0, str1); % strvcat连接产生多行字符串str6 double(str0); % 取str0的ASCII值也可用abs函数str7 char(str6); % 把ASCII转为字符串% 操作% 比较strcmp(str0, str1); % 相等为1不等为0strncmp(str0, str1, 3); % 比较前3个是否相等(n)strcmpi(str0, str1); % 忽略大小写比较(i)strncmpi(str0, str1, 3); % 忽略大小写比较前3个是否相等% 查找替换strfind(str0, str1); % 在str0找到str1的位置strmatch(str1, str0); % 在str0字符串数组中找到str1开头的行数strtok(str0); % 截取str0第一个分隔符空格tab回车前的部分strrep(str0, str1, str2); % 在str0中用str2替换str1% 其他upper(str0); % 转大写lower转小写strjust(str0, right); % 将str0右对齐left左对齐center中间对齐strtrim(str0); % 删除str0开头结尾空格eval(str0); % 将str0作为代码执行 转换
% ___2___ -- 如num2str将数字转字符串 dec2hex将十进制转十六进制
%转换str_b num2str(b);% absdouble取ASCII码char把ASCII转字符串abs_str abs(#39;aAaA#39;); 第2部分程序结构
程序控制
continue 跳过当次循环剩下语句进入下一循环 break 跳出当前循环 return 跳出程序并返回
与其他语言相类似matlab中也包含选择结构和循环结构这样普通的程序控制结构与python的表示形式类似需要用缩进来表示程序的执行步骤但是不需要像python一样使用冒号”“
%%
a 5;
x [1, 2]; y [3, 4];%%
% 选择结构%if-elseif-else-endif agt;0disp(x);elseif a0disp(a);elsedisp(a-1);end% switch-case-otherwise-endswitch acase 0disp(a);case 1disp(a1);otherwisedisp(#39;aaa#39;);end% try-catchtryz x*y;catchz x.*y; % 若try出错则执行enddisp(z);%%
% 循环结构% for 循环变量初值:步长:终值 - endfor i0:1:10 % 步长为负则初值大于终值disp(i); % 循环体内不可对循环变量做修改end% while-endwhile a2disp(a);a a-1;end m文件
% m文件% 脚本文件没有输入输出参数执行后变量结果返回工作空间可直接运行% 以下是脚本文件文件名假设为exp.m% **********************************************clearr 5;s pi*r*r;p 2*pi*r;disp(s)disp(p)% **********************************************% 以下是调用% **********************************************exp% **********************************************% 函数文件以function开头有输入输出变量为局部变量不返回工作空间需要调用% 以下是函数文件% **********************************************function [s, p] circ(r) % 文件命名应与函数名一致系统找文件名circ.m% CIRC 计算圆面积和周长 % 简单说明% 参数输入参数r:圆半径输出参数s:圆面积p:周长 % 详细说明s pi*r*r;p 2*pi*r;end%**********************************************% 以下是调用%**********************************************[a, b] circ(5); % 返回为多个参数时若写a circ(5)则保留第一个返回值%**********************************************% *以下是带子函数的函数文件% **********************************************function y key(w) % 主函数放第一个函数名为keyif w0y type0(w); % 调用子函数type0elsey type1(w);endendfunction y0 type0(a) % 子函数各子函数之间顺序无所谓y0 a1;endfunction y1 type1(a)y1 a4;end% **********************************************% *函数输入输出参数可以不定% nargin输入参数个数nargout输出参数个数% varargin输入参数内容的元胞数组varargout输出参数% 以下是函数文件% **********************************************function varargout idk(varargin)x length(varargin);varargout{1} x;varargout{2} x1;end% ********************************************** 第3部分图像绘制
二维曲线绘制
线性图形设计
颜色 b蓝 g绿 r红 c青 m紫 y黄 k黑 w白 线-实线 :点线 --虚线 -.点画线 点.实点 o圆圈 x叉 十字 *星号 s方块 d钻石 v下三角 ^上三角 左三角 右三角 p五角星 h六角星
%%
x 0:0.1:2*pi;
y1 sin(x);
y2 cos(x);%%
% 二维曲线绘制% 基本函数% plot(y)% y为向量% 纵坐标为y的值横坐标自动为元素序号(角标1)此处为1~9plot(y1); % y为矩阵figure; % 开启新绘图窗口下一次绘图在新窗口y [y1, y2];plot(y); % 当y为矩阵按每一列画出曲线颜色自动区分% plot(x, y)% xy为向量plot(x, y1); % 先绘制曲线% plot(x1, y1, x2, y2...)plot(x, y1, x, y2); % 在同一个窗口同一坐标轴绘制多条曲线% 线性图形格式设置% 线形颜色数据点plot(x, y1, b:o); % 蓝色 点线 圆圈% 坐标轴plot(x, y1);axis([-1*pi, 3*pi, -1.5, 1.5]); % 规定横纵坐标范围% 图形修饰% 标题标签title(a title); % 图像标题xlabel(this is x); % x轴标记同理还有ylabelzlabel% 图例设置legendhahaha, location, best); % str的顺序与绘图顺序一致; best指图例位置最佳化还有其他位置% 图形保持plot(x, y1);hold on; % 在原有窗口y1曲线上增加绘制下一个图形plot(x, y2); % y2在同一窗口内被绘制 hold off;% 分割绘制subplot(2, 2, 1); % 分割成2x2区域在第一块区域绘制下一个图形plot(x, y1); % y1被绘制在4块区域的第一块subplot(2, 2, 2); % 分割方法相同区域改变plot(x, y2); % y2在第二块区域%%
二维特殊图形绘制
%*二维特殊图形绘制% 柱状图bar(x, y, width, 参数); % x横坐标向量m个元素; y为向量时每个x画一竖条共m条矩阵mxn时每个x画n条;% width宽度默认0.8超过1各条会重叠;% 参数有grouped分组式stacked堆栈式; 默认grouped% bar垂直柱状图,barh水平柱状图,bar3三维柱状图,barh3水平三维柱状图(三维多一个参数detached, 且为默认)% 饼形图pie(x, explode, lable); % x为向量显示每个元素占总和百分比, 为矩阵显示每个元素占所有总和百分比% explode向量与x同长度为1表示该元素被分离突出显示默认全0不分离% pie3绘制三维饼图% 直方图hist(y, n); % y为向量把横坐标分为n段绘制hist(y, x); % x为向量用于指定每段中间值, 若取N hist(y, x), N为每段元素个数% 离散数据图stairs(x, y, b-o); % 阶梯图参数同plotstem(x, y, fill); % 火柴杆图参数fill是填充火柴杆或定义线形candle(HI, LO, CL, OP); % 蜡烛图:HI为最高价格向量,LO为最低价格向量,CL为收盘价格向量,OP为开盘价格向量% 向量图compass(u, v, b-o); % 罗盘图横坐标u纵坐标vcompass(Z, b-o); % 罗盘图复向量Zfeather(u, v, b-o); % 羽毛图横坐标u纵坐标vfeather(Z, b-o); % 羽毛图复向量Zquiver(x, y, u, v); % 以(x, y)为起点(u, v)为终点向量场图% 极坐标图% polar(theta, rho, b-o); % 极角theta, 半径rhotheta -pi:0.01:pi;rho sin(theta);polar(theta, rho, b)% 对数坐标图semilogx(x1, y1, b-o); % 把x轴对数刻度表示, semilogy是y轴对数刻度表示loglog是两个坐标都用对数表示% 双纵坐标plotyy(x1, y1, x2, y2, fun1, fun2); % fun规定了两条条线的绘制方式如plot,semilogx,semilogy,loglog,stem等% 函数绘图f sin(2*x);ezplot(f, [0, 2*pi]); % 绘制f并规定横坐标范围也有[xmin, xmax, ymin, ymax]x 2*cos(t);y 4*sin(t);ezplot(x, y); % 绘制x(t),y(t)在[0, 2*pi]图像, 也可以在最后用[tmin, tmax]规定t的范围三维曲线曲面绘制
% 三维曲线曲面绘制% 三维曲线x 0:0.1:2*pi;y sin(x); z cos(x);plot3(x, y, z, b-*);% 三维曲面% 三维网格x -5:0.1:5; % 规定了x轴采样点也规定了x轴范围y -4:0.1:4; % 规定了y轴采样点也规定了y轴范围[X, Y] meshgrid(x, y); % 得到了xoy面网格点Z X.^2Y.^2;mesh(X, Y, Z) % XY是meshgrid得到的网格点Z是网格顶点c是用色矩阵可省略% 三维表面图x -5:0.1:5; y -4:0.1:4;[X, Y] meshgrid(x, y);Z X.^2Y.^2; % 以上部分同上surf(X, Y, Z) % 与上一个类似第4部分多项式
多项式
多项式创建时自动按照系数向量按x降幂排列最右边是常数若所给数字为[1,2,3,4]则生成的多项式为最后一项为常数
%%
% 多项式% 创建p [1, 2, 3, 4]; % 系数向量按x降幂排列最右边是常数f1 poly2str(p, x); % 生成好看的字符串 f1 x^3 2 x^2 3 x 4不被认可的运算式f2 poly2sym(p); % 生成可用的符号函数 f2 x^3 2*x^2 3*x 4% 求值x 4;y1 polyval(p, x); % 代入求值若x1为矩阵则对每个值单独求值% 求根r roots(p); % p同上由系数求根结果为根植矩阵p0 poly(r); % 由根求系数结果为系数矩阵%%数据插值
% 数据插值% 一维插值%yi interp1(X, Y, xi, method)X [-3, -1, 0, 1, 3];Y [9, 1, 0, 1, 9]; % XY为已知点横纵坐标向量y2 interp1(X, Y, 2); % 差值预估在x2的y的值x不能超过已知范围(此处xlt;3)y2m interp1(X, Y, 2, spline); % 用spline方法(三次样条)差值预估在x2的y的值% 二维插值%zi interp1(X, Y, Z, xi, yi,method)
数据统计
%%
X [2, 3, 9, 15, 6, 7, 4];
A [1, 7, 2; 9, 5, 3; 8, 4 ,6];
B [1, 7, 3; 9, 5, 3; 8, 4 ,6];% 数据统计% 矩阵最大最小值y max(X); % 求矩阵X的最大值min最小值[y, k] max(X); % 求最大值k为该值的角标[y, k] max(A, [], 2); % A是矩阵2时返回y每一行最大元素构成的列向量k元素所在列1时与上述相同% 均值和中值y mean(X); % 均值y median(X); % 中值y mean(A, 2); % 2时返回y每一行均值构成的列向量1时与上述相同y median(A, 2); % 2时返回y每一行中值构成的列向量1时与上述相同% 排序Y sort(A, 1, ascend); % sort(矩阵, dim, method)dim为1按列排序2按行排序ascend升序descend降序[Y, I] sort(A, 1, ascend); % I保留了元素之前在A的位置% 求和求积累加累乘y sum(X); % 求和y prod(X); % 求积y cumsum(X); % 累加y cumprod(X); % 累乘
数值计算
% *数值计算% 最(极)值%多元函数在给定初值附近找最小值点x fminsearch(fun, x0);% 函数零点x fzero(fun, x0); % 在给定初值x0附近找零点第5部分符号函数
符号对象创建
%%
% 符号对象创建% sym函数p sin(pi/3);P sym(p, r); % 用数值p创建符号常量Pd浮点数f有理分式的浮点数e有理数和误差r有理数% syms函数syms x; % 声明符号变量f 7*x^2 2*x9; % 创建符号函数% 符号对象精度转换digits; % 显示当前用于计算的精度digits(16); % 将计算精度改为16位降低精度有时可以加快程序运算速度或减少空间占用a16 vpa(sqrt(2)); % vpa括起的运算使sqrt(2)运算按照规定的精度执行a8 vpa(sqrt(2), 8); % 在vpa内控制精度离开这一步精度恢复
符号运算 加-减*乘/除外 转置 相等 ~不等 sin, cos, tan; asin, acos, atan 三角反三角 sinh, cosh, tanh; asinh, acosh, atanh 双曲反双曲 conj复数共轭real复数实部imag复数虚部abs复数模angle复数幅角 diag矩阵对角triu矩阵上三角tril矩阵下三角inv逆矩阵det行列式rank秩poly特征多项式 expm矩阵指数函数eig矩阵特征值和特征向量svd奇异值分解
符号多项式函数运算
%%
% 符号多项式函数运算% *符号表达形式与相互转化% 多项式展开整理g expand(f); % 展开h collect(g); % 整理(默认按x整理)h1 collect(f, x); % 按x整理降幂排列% 因式分解展开质因数fac factor(h); % 因式分解factor(12); % 对12分解质因数% 符号多项式向量形式与计算syms a b c;n [a, b, c];roots(n); % 求符号多项式ax^2bxc的根n [1, 2, 3];roots(n); % 求符号多项式带入a1, b2, c3的根% *反函数fi finverse(f, x); % 对f中的变量x求反函数%%符号微积分
% 符号微积分% 函数的极限和级数运算% 常量ab% 极限limit(f, x, 4); % 求f(x), x-4limit(f, 4); % 默认变量-4limit(f); % 默认变量-0limit(f, x, 4, right); % 求f(x), x-4, left x-4-% *基本级数运算% 求和symsum(s, x, 3, 5); % 计算表达式s变量x从3到5的级数和或symsum(s, x, [a b])或symsum(s, x, [a;b])symsum(s, 3, 5); % 计算s默认变量从3到5的级数和symsum(s); % 计算s默认变量从0到n-1的级数和% 一维泰勒展开taylor(f, x, 4); % f在x4处展开为五阶泰勒级数taylor(f, x); % f在x0处展开为五阶泰勒级数taylor(f); % f在默认变量0处展开为五阶泰勒级数% 符号微分% 单变量求导单变量偏导n 1; % 常量nfn diff(f, x, n); % f对x的n阶导f1 diff(f, x); % f对x的1阶导diff(f, n); % f对默认变量的n阶导diff(f); % 默认变量1阶导% 多元偏导fxy diff(f, x, y); % 先求x偏导再求y偏导fxyz diff(f, x, y, z); % 先求x偏导再求y偏导,再求z偏导% 符号积分% 积分命令int(f, x, 1, 2); % 函数f变量x在1~2区间定积分int(f, 1, 2); % 函数f默认变量在ab区间定积分int(f, x); % 函数f变量x不定积分int(f); % 函数f默认变量不定积分% 傅里叶拉普拉斯Z变换%%符号方程求解
% *符号方程求解% 符号代数方程% 一元方程eqn1 a*xb;S solve(eqn1); % 返回eqn符号解% 多元方程组eqn21 x-ya;eqn22 2*xyb;[Sx, Sy] solve(eqn21, eqn22, x, y); % [Svar1,...SvarN]solve(eqn1,...eqnM, var1,...varN),MN不一定相等[Sxn, Syn] solve(eqn21, eqn22, x, y,ReturnCondition, true); % 加上参数ReturnCondition可返回通解及解的条件% 非线性fsolveX fsolve(fun, X0, optimset(option)); % fun函数.m文件名X0求根初值option选项如(Display,off)不显示中间结果等
其他参数(参数加上true生效) IgnoreProperty忽略变量定义时一些假设 IgnoreAnalyticConstraints忽略分析限制 MaxDegree大于3解显性解 PrincipleValue仅主值 Real仅实数解