MATLAB 基本语法
matlab基本语法

Matlab基本操作及常用函数■ 基本操作; % 分号: 禁止显示结果% % 注释, Ctrl+R 注释, Ctrl+T 取消注释%% % 定义块, Ctrl+Enter 仅运行本块代码%{ ... %} % 注释块... % 句尾...表示续行(使用三个以上的点...续行)clear XXX % 清除某个内存变量clear all; % 清空所有内存变量(可用工具栏)clc, home % 相同,清除命令窗口(可用工具栏)clf % 清除图形窗口(clear figure)ans % 最后计算结果(Python中为_)edit % 打开 M文件 编辑器guide % 打开 GUI文件 编辑器help plot % 查找plot()函数帮助exit, quit % 退出Matlab! % 执行DOS命令cd % 设置当前工作目录,缺省为'..\MATLAB\R2015a\bin' dir % 显示当前工作目录/指定目录下所有目录和文件 date % 获取当前日期now % 获取当前时间tic, toc % 启动和结束计时器■ 变量操作who % 查看内存变量(在工作空间中可以直接查看) whos x % 显示x的数据类型(变量详细信息)save % 将所有变量保存至缺省文件 matlab.mat save data.mat % 将所有变量保存至文件(注.mat可以省略) save data.mat a b c % 将变量a,b,c保存至文件(变量不能有逗号)load data.mat % 载入数据文件中所有变量load data.mat a b % 载入数据文件中指定变量■ 格式化数值显示方式format % 使用缺省值,相当于format shortformat short % 5位定点方式(四位小数),系统缺省方式format short e % 5位浮点方式(四位小数加科学计数法)format short g % 5位自适应方式format long % 15位定点方式(十四位小数)format long e % 15位浮点方式(十四位小数加科学计数法) format long g % 15位自适应方式format bank % 银行方式(两位小数)format rat % 近似有理数显示(分数表示),相当于rats(x)format compact % 无空行显示format loose % 有空行显示注:系统缺省设置为 format loose(空行显示),如需设置为无空行显示,需进行以下操作: Preference ‐> Command Windows ‐> Numeric disp = compact■ 数值操作syms x y % 定义变量,不能逗号(分大小写,长度不过19字符x = 2e‐3或2E‐3 % 浮点数默认双精度,单精数必须single()转换x = 2 + 2i, y = 3j % 虚数(1i不能省略1,不影响自定义变量i,j使用)x ~= y % 注意py不等于为<>或!=x = input('enter num:') % 提示输入fprintf('%0.3f\n', pi) % %d整,%0.3f浮,%e科学计数,%g自动选择^ , sqrt(x) % 乘方开方(乘方与vb相同,与py的**方式不同)abs(x) % 绝对值或向量长exp(x) % 自然指数,e^xlog(x), log2(x), log10(x) % 自然对数ln(x),以2,10为底的对数round(x), fix(x) % 四舍五入取整,截位取整roundn(pi, ‐6) % 保留3位(命令行无法显示,变量窗口可显示)ceil(x), floor(x) % 天花板取最近大整数,地板取最近小整数rats(x) % 转成分数表示 ********a = mod(10,3); % 取余数a = mod(10,‐3); % 取补数a = max(x);b = min(x) % 取数组(列向量)的最大最小值[v, pos] = max(x) % 取数组(列向量)的最大值及位置sin(x), cos(x), tan(x) % 注意matlab使用弧度,不是角度!!asin(x), acos(x), atan(x) %sin(pi)不等于0, 而是<eps.sinh(x), cosh(x), tanh(x)asinh(x), acosh(x), atanh(x)常数:pi % 3.1415926...eps % 无穷小inf, ‐inf % 正无穷大,负无穷大nargin, nargout % 函数输入变量数,输出变量数intmax, intmin % int32的最小最大值realmin, realmax % double的最小最大值intmax, intmin('int32') % int/uint8,16,32,64的最大最小值realmax, realmin('double') % sigle,double的最大最小值nan % 非数值变量类型判断class(x) % 判断x变量类型isnan(x) % 判断x是否为非数值类型isinf(x) % 判断x是否为无穷数isfinite(x) % 判断x是否为有限数isnumeric(x) % 判断x是否为数值型(整型或浮点型)isinteger(x) % 判断x是否为整型isreal(x) % 判断x是否为实数isfloat(x) % 判断x是否为浮点数isa(x, 'integer') % 判断x数值类型:numeric,integer; int/uint8,16,32,64, single, double■ 类型转换str2num('123.456') % 类型转换:字串→数字(相当py中int,long,float)num2str(123.456) % 类型转换:数值→字串(相当py中str)num2str(pi,'%0.3f') % 带格式转换,类似sprintf()int2str(123) % 整数转字串,返回'123'(较少用)char([49 50 51]) % 类型转换:数值→字符(相当py中chr)int32('123') % 类型转换:字符→数值(相当py中ord)int32(123.456) % 强制转换:float→uint8(无int,long,float)注: mat无int,long,float型,数值输入默认double;数值类型为int/uint8,16,32,64,single,double十种;数值转换字串时将字串按字符数组处理,字符串的转换应该使用num2str,str2num;注: uint8自动将>255→255,<0→0,不需要再进行x(x>255)=255,x(x<0)=0判断!double(2)+int32(2) % double与int8,16,32,single运算结果降级double(2)*true % double与逻辑型,字符型计算仍为doublesingle(2)*true % single不能整数计算!与逻辑,字符型计算不变int8(2)+int32(2) × % 不同类型整数不能+ ‐ * / 运算■ 进制转换dec2bin(23,8) % 十进制转8位二进制(位数8可省略), 返回字符串 '00010111' bin2dec('1001') % 二进制转十进制,只能字符串输入, 返回doubledec2hex(10,3) % 十进制转16进制(位数3可省略),返回字符串 '00A'hex2dec('00A') % 16进制转十进制,只能字符串输入, 返回double■ 位操作A=7; B=5; % A=0111, B=0101bitand(A, B) % 按位与, ans=0101bitor(A,B) % 按位或, ans=0111bitxor(A,B) % 按位异或, ans=0010bitcmp(uint8(85)) % 按位取反, '0101 0101'返回'1010 1010'bitshift(2,2) % 移位M=magic(10)M1 = bitget(M,1) % 取8bit矩阵的最低位M1 = bitset(M,1,0) % 将矩阵最低位全部设置为0/1■ 字符串操作a = ' aa '; b='b b'; c='abcd'; % 字串采用单引号,py单双引号皆可d = 'we''re here'; % 字串中的'用双单引号''定义len = length(a) % 获取字串长度[r, len] = size(a) % 获取字串长度, r行数=1, len列数=字串长度x = [a, b, c] % [] 字符串连接 (不删空格,strcat的补充方式!)s1= {a, b, c}; s2={c, b, a}; % {} 字符串数组, 此时, class(a)=char, class(s1)=cells1(1)→cell, s1{1}→char % 注意: class(s1(1))=cell, class(s1{1})=charx = d(5:10); % 取子串x = d(end:‐1:1); % 字符串倒排x = strcat(a, b, c) % 字符串连接 (删除句尾空格),如果不想删除空白符,应使用[a,b,c]方式连接x = strcat(s1, s2) % 字符串数组连接 (不删空格)x = blanks(10) % 生成10个空格的字符串x = deblank(a) % 去掉后续空格x = strtrim(a) % 去掉开头和结尾的空白(空格,制表,换行)isstr(x) % 测试是否为字符串isletter(x) % 测试是否为字符isspace(x) % 测试是否为空格all(isstrprop(ss, 'alpha')) % 测试是否全为字母all(isstrprop(ss, 'digit')) % 测试是否全为数字all(isstrprop(ss, 'alphanum')) % 测试是否全为数字字母strcmp(a, b) % 测试字符串是否相同strrep(c, 'c', 'xx') % 将字符串c中的c字符替换为xx,返回'abxxd'strtok(c, 'c') % 取字符串c中c字符之前的部分,返回'ab'disp('需显示的字符串') % 直接输出sprintf('PI=%0.7f', pi) % 格式化输出■ 字符串数组(元胞数组)ss={'a', '', 'b'} % 定义字符串数组,不能用[](成为字符串)xx=[ss, ss] % 元胞数组合并,不能用{}(成为复合元胞数组)ss(cellfun('isempty', ss))=[] % 删除字符串数组中的空元素regexp(ss, '.{3}', 'match') % 将字符串按3个字符分离,去掉结尾不足3个字符的 regexp(ss, '.{3}', 'split') % 获取结尾不足3个字符的sp=[regexp(ss, '.{3}', 'match'), regexp(ss, '.{3}', 'split')]; sp(cellfun('isempty', sp))=[]ss = 'adfasdfasf' % 定义字符串ss = [ss,blanks(abs(mod(length(ss),‐3)))] % 不足3位用空白补充sp = regexp(ss, '.{3}', 'match') % 按3个字符分离ss = '123.4,567.8,901.2' % 定义字符串sp = regexp(ss, ',', 'split') % 字符串分离■ 时间操作ss = '2014‐04‐01';d1 = datenum(ss); % 将日期字符串转换为天数(自0000年起)d2 = datestr(ss); % 将日期串转换为字串(缺省为'01‐Apr‐2014')d3 = datevec(ss); % 将日期串转为日期向量[年, 月, 日, 时, 分, 秒]n = today‐datenum('2013‐12‐31') % 计算日期串的年天数n = weeknum('2014‐04‐01'); % 计算日期串的年周数n = weekday('2014‐04‐01'); % 计算日期串的星期数 (注意周日为1, 周一为2...) today; =datenum(date) % 获取当前日期的天数 (整型)date; =datestr(today) % 获取当前日期的字符串datevec(date); =datevec(today) % 整型向量(无时分秒), [2014, 4, 1, 0, 0, 0]format shortgclock; % 获取当前时间矢量(有时分秒)now; % 获取当前时间的天数(有时分秒)■ 逻辑操作& | ~ % 标量/数组/矩阵的与或非(python采用and, or, not)&& || % 标量(表达式)的与或, && 左边不成立不计算右边!!if(a && b/a>0), ... % 可避免被0除■ 向量/数组定义x = [1 2 3 4 5] % 数组使用[]标识(元素之间采用空格或逗号分隔)x = 1:12 % 同 [1:12]中括号可省略,即 1,2,3...10(不同于python通过range()产生数组)x = 1:2:12 % 通过(起点,步长,终点)创建数组,即1,3,5,7,9,11,注意结尾不是10!x = linspace(1, 10) % 不指定步长,缺省间隔数为100x = linspace(1, 10, 10) % 通过(起点,终点,个数)创建数组,返回1,2...10;(0,10,11)返回0,1 (10)x = logspace(1, 10) % 不指定步长,缺省间隔数为50x = logspace(1, 10, 2) % 通过(起点,终点,个数)创建线性数组矩阵定义x = [1 2 3; 4, 5, 6; 7, 8 9] % 单行输入(元素之间采用空格或逗号分隔,行间采用分号或回车分隔)x = [1 2 3 % 换行输入(矩阵[]逗号可省略,但参数()逗号不能省)4 5 6 ]x = reshape(1:12, 3, 4) % 矩阵重排为3×4。注意:m*n必须与原矩阵相同,重排顺序为先由上至下、再由左至右x = reshape(x, 1, []) % 重排为行向量(另一维可省略!!)x = reshape(x, [], 1) % 重排为列向量, 相当于 x(:);A = repmat(x, 5, 6) % 重复矩阵生成新矩阵常用矩阵zeros(n), zeros(m, n) % n阶0方阵,m×n全0的double矩阵ones(n), ones(m, n) % n阶1方阵,m×n全1的double矩阵false(n), false(m, n) % n阶1方阵,m×n全0的logical矩阵true(n), true(m, n) % n阶1方阵,m×n全1的logical矩阵eye(n), eye(m, n) % n阶单位阵,m×n单位阵rand(m, n), randn(m, n) % m×n随机阵(0‐1),正态分布矩阵,省略1参数时生成方阵 randperm(n) % 产生 1‐n 随机排列数组(Permutation)■ 数组、矩阵操作向量(一维)操作:v = [1 2 3 4 5]'; % 注意,带参数转置应采用.',否则共轭转置;v(2)=0 % 取数组中的元素(数组下标从1开始)v(3:5); v(end‐2:end) % 取数组的前3个、后3个元素v(3, 5); v([3, 5]) % 取第3行第5列元素; 取下标为3, 5的两个元素v(3:5)=[] % 删除第3、4、5个元素v = v(:) % 将向量/矩阵转为"列向量",注: 在min(),max()等函数中用比较方便!! v = v(1:end) % 将向量/矩阵转为"行向量"v(v>2); % 取部分数值组成列向量;any(v); % 数组全为1返回1, 否则返回0(忽略Nan,不作为0)注: v>2 返回[0 0 1 1 1]布尔数组, find(v>2) 返回[3 4 5]下标数组;v(v>2), v(find(v>2)) 返回值相同, 但前者效率更高!A = reshape(1:12, 3, 4) % 向量转为矩阵[r,c] = size(A); % 返回矩阵 [行数, 列数]r = size(A, 1); % 返回矩阵的行数c = size(A, 2); % 返回矩阵的列数n = length(A); % 返回矩阵行列数最大值, 相当于 max(size(x));n = numel(A); % 返回元素总数,即r*c值n = nnz(A); % 返回非0元素总数;矩阵(二维)操作:x=rand(3, 3); % 生成3×3随机矩阵x(2, 3)=0 % 将第2行第3列设为0,如果没有,则增加该行或列x(2, :)=0; x(:, 3)=0 % 取某行、某列数值x(1, :)=0; x(end, :)=0 % 取第1行、最后一行x(:, 3)=0 % 将第3列全部为0,如果没有第3列,则增加该列x(:, 3)=[] % 删除第3列(注意不能单独删除某个元素,但可连删)矩阵分块组合b = [10 11 12][b; x], [x; b] % 矩阵上方、下方增加一行,注意用;分隔[x(1, :); b; x(2:3, :)] % 矩阵第2行插入一行[b', x], [x, b'] % 矩阵左边、右边增加一列,注意用,分隔[x(:, 1), b, x(:, 2:3)] % 矩阵第2列增加一列注意:增加行、列操作行列数应满足矩阵要求;x(:, [1 2 4]) % 取第1,2,4列x(:, [1 3 2 4]) % 按次序交换列(A只有4列)x([2 4], [3:5]) % 取A的第2、4行的3,4,5列(数列括号可省略,即A([2 4], 3:5)三维矩阵(多波段)操作:m = cat(3, x, x+1, x+2, x+3) % 通过二维矩阵构造4波段三维矩阵m(:, :, 1)=0 % 取第1波段矩阵zeros(size(m(:,:,1))) % 第1波段矩阵相同0矩阵,比直接赋0值快!!**** 特殊操作 **************A = (x>5) % 取所有大于5数值的二值矩阵v = x(x>5) % 取所有大于5数值组成列向量,剔除其它数值!!x(x>5) = 0 % 将矩阵中所有大于5数值=0,矩阵A尺寸不变!!注: 处理影像数组超限问题比较方便!!% 注意,uint8()可以自动处理x<0,x>255的数值!!v = unique(x) % 返回矩阵所有不重复元素组成列向量;实例: 剔除部分行列(参见矩阵分析部分)x = 31:51; % 构造21个数值数组r = length(x); r = 1:r; d=5; % 设置间隔数值A=x(mod(r,d)==0 ) % 每隔5个取值, 剔除其它数值B=x(r==1 | mod(r,d)==0 | r==length(r) ) % 每隔5个取值, 保留首尾, 剔除其它数值■ 稀疏矩阵满矩阵既浪费计算时间, 也浪费存储空间, 因此需要稀疏化;只有全部稀疏矩阵操作, 结果才是稀疏矩阵; 只要有一个矩阵是满矩阵, 结果就是满矩阵;A = diag(1:10); % 构建满矩阵B = sparse(A); % 将满矩阵转换为稀疏矩阵C = full(B); % 将稀疏矩阵转换为满矩阵B = sparse(10, 10); % 创建10×10全0矩阵B = sparse(1:10,1:10,11:20); % 设定系数矩阵(i,j)上的元素为v, i,j,v必须同维![i,j,v] = find(B); % 搜索矩阵的(i,j)和数值vv = nonzeros(B); % 获取矩阵非0元素(列向量)注:Mat数组定义使用[],操作使用(),不像python定义和操作均用[]。________________________________________■ M文件 = M函数 + M脚本1、M函数function [x, y] = func(i, j) % 基本函数形式% This func used for ... % H1 声明行% in = i, j; out = x, y % 详细帮助行 (键入help可以查看)if nargin == 1, ...; end % 判断输入参数个数if nargout ==1, ...; end % 判断输出参数个数function [a, b] = func2(c, d) % 子函数/嵌套函数....endend注1: M 函数必须保存为 func.m 文件, 且该文件必须在matlab的搜索路径中;注2: 一个函数文件只能有一个主函数, 其它函数为子函数, 嵌套函数, 匿名函数;注3: 不能在命令行、脚本文件中定义函数, 即不能在命令行窗口输入 function c =myfunc(a, b) ×错误!function [x, y] = func(i, j, varargiin) % 输入参数个数不定function [x, y, varargout] = func(i, j) % 输出参数个数不定for i=i:length(varargin) % 判断可变参数个数ss = ss + varargin{i} % 调用可变参数值endendfunction [y, x] = func(x) % 返回修改后的 x 数值global v1 v2 v3 % 函数、脚本中定义相同全局变量可互通(空格分隔)x = x+5; y = x.^2; % 改变 x 数值2、匿名函数 @()func1 = @() sin(pi/2) % 定义无参数匿名函数, >> func1()func2 = @(x, y) (sin(x)+cos(y)) % 定义多参数匿名函数, >> func2(pi/2, pi/3)func3 = @(x) func2(x).^2注: 不带()方式调用为查看函数, 如 >> func1 查看函数定义;3、内联函数 inline()func1 = inline('x.^2', 'x') % 定义内联函数, >> func1(2)注: matlab7以后建议使用 @() 代替 inline() 函数;4、函数句柄/别名 @arcsin = @asin % 定义asin()函数别名为arcsin()arcsin(sqrt(2)/2) % 相当于asin(sqrt(2)/2)■ 流程控制1、if 语句if(x>0), disp(x); end % 一行写入(条件用, 语句用;)if(x>0) disp(x); % 多行写入(条件语句括号可省略逗号)elseif(x==0) disp(x);else disp(x);end注: 能用逻辑数组的尽量不用 if 判断;2、switch 语句switch(x)case 0, disp(x); % 单值匹配可用(), 也可省略case{1, 3, 5}, disp(x); % 多值匹配采用{ }方式otherwiseend3、for 循环for i= 1:100000000, disp(i); end % 不初始化向量, 不会导致内存不足for i=[1:100000000], disp(i); end % 初始化向量, 内存不足!for i=[1, 3, 5] % 多行循环endfor i=[1, 3, 5; 2, 4, 6] % 循环方式为[1, 2]', [3, 4]', [5, 6]'i(2)‐i(1)end注: 能用数组处理的尽量不用 for 循环;4、while 循环while (条件), statement; endwhile(x>0) ...end注:循环语句使用continue进行下一循环,使用break终止循环,使用return退出m文件. ________________________________________■ 文件操作文件读写步骤: 打开文件 → 读写 → 关闭文件; 二制文件读写: fread(), fwrite(); 文本文件读写: fscanf(), fprintf()fp = fopen('e:\test.txt', 'rt'); % 打开文本文件A = fscanf(fp, '%c')'; % 一次读入所有文本(注意:%c包含空格,%s去掉空格)B = fscanf(fp, '%d,%d,%d', [3, inf])'; % 按行读入x,y,z,并生成二维矩阵(注意:按列输出,故结果需转置)fclose(fr); % 关闭文本文件A = rand(20,3);fp = fopen('e:\test.txt', 'wt'); % 打开文本文件fprintf(fp, '%0.3f, %0.3f, %0.3f\n', A'); % 写入x,y,z数据(注意:按列读取,故输入矩阵需转置) fclose(fr); % 关闭文本文件注: 文件打开方式: r 只读(必须存在), w 只写(不存在新建,存在则覆盖), a 添加(不存在新建,存在添加), r+ 可读写(必须存在), w+ 可读写(不存在新建,存在则覆盖), a+ 可读写可添加(不存在新建,存在添加); b 二制文件(缺省), t 文本文件(即必须 rt,wt,at);fp = fopen('e:\test.bmp'); % 打开二制文件(r,rb可省略)frewind(fp); BM = fread(fp, 2, '*char')'; % 读取为字符型(列方式,需转置) frewind(fp); BM = fread(fp, 1, '*uint16'); % 读取2字节为uint16型uint16('B') + bitshift(uint16('M'),8); % 同上,19778frewind(fp); BM = fread(fp, 1, 'uint16=>double'); % 读取2字节并转换为8字节 frewind(fp); A = fread(fp, 8, 'ubit1'); % 按1位读取,共读取8位,返回 0100 0010(翻转B的二制数)frewind(fp); A = fread(fp, 4, 'ubit2'); % 按2位读取,共读取8位,返回 2 0 0 1注: 二制文件读取精度可选: char/uchar; int/uint8,16,32,64; float32,64; bit/ubitN(1‐64);。
matlab基本语句及语法

matlab基本语句及语法一、基本语法1. 变量定义与赋值:在MATLAB中,可以使用等号(=)将一个数值或表达式赋值给一个变量。
例如:a = 5; 表示将数值5赋值给变量a。
2. 注释:在MATLAB中,可以使用百分号(%)来添加注释,以便于代码的阅读和理解。
例如:% 这是一条注释。
3. 函数的定义与调用:在MATLAB中,可以使用关键字function 来定义函数,并使用函数名进行调用。
例如:function result = add(a, b) 表示定义了一个名为add的函数,该函数接受两个参数a 和b,并返回一个结果result。
4. 条件语句:在MATLAB中,可以使用if语句来实现条件判断。
例如:if a > b 表示如果a大于b,则执行if语句块中的代码。
5. 循环语句:在MATLAB中,可以使用for循环和while循环来实现循环操作。
例如:for i = 1:10 表示从1循环到10,每次循环中i 的值递增1。
6. 矩阵的定义与操作:在MATLAB中,可以使用方括号([])来定义矩阵,并使用各种运算符进行矩阵的操作。
例如:A = [1 2; 3 4] 表示定义了一个2x2的矩阵A。
7. 字符串的操作:在MATLAB中,可以使用单引号('')来定义字符串,并使用加号(+)来进行字符串的拼接。
例如:str = 'Hello' + 'World' 表示将字符串'Hello'和'World'进行拼接。
8. 文件的读写:在MATLAB中,可以使用fopen、fread、fwrite 等函数来进行文件的读写操作。
例如:fid = fopen('file.txt', 'w') 表示打开一个名为file.txt的文件,并以写入模式打开。
9. 图形绘制:在MATLAB中,可以使用plot、scatter、histogram等函数来进行图形的绘制。
matlab 标准写法

matlab 标准写法一、简介MATLAB 是一种广泛应用于工程和科学领域的数学软件,它提供了丰富的数学函数和工具箱,方便用户进行数值计算、数据分析、图形可视化等任务。
为了提高代码的可读性、可维护性和可扩展性,本手册旨在提供 MATLAB 的标准写法,帮助用户更好地利用 MATLAB 工具进行科学计算。
二、基本语法1. 变量命名:变量名应使用小写字母、数字和下划线,避免使用特殊符号。
变量名应具有描述性,以便于理解代码的功能。
2. 注释:在代码中添加注释,有助于他人理解代码的功能和实现方式。
注释应以“%”开头,可采用单行或多行注释。
3. 矩阵和数组:在 MATLAB 中,矩阵和数组是常用的数据结构。
应使用矩阵运算符(如“*”、“+”、“-”等)进行矩阵运算,而不是使用算术运算符。
4. 函数定义:函数应以“function”开头,并指定输入和输出参数。
函数内部应使用“return”语句返回结果。
5. 文件操作:使用“fopen”、“fwrite”、“fread”等函数进行文件读写操作。
三、常用函数库MATLAB 提供了许多常用的函数库,如矩阵运算、数值计算、统计分析、图形可视化等。
以下是一些常用的函数库及其标准用法:1. 矩阵运算:如“*”表示矩阵乘法,“+”、“-”表示矩阵加法、减法等。
2. 数值计算:如“abs”表示绝对值函数,“log”表示对数函数等。
3. 统计分析:如“mean”、“std”表示平均值、标准差等统计函数。
4. 图形可视化:如“plot”、“scatter”表示绘制折线图、散点图等图形函数。
四、代码规范1. 缩进:使用四个空格作为缩进,避免使用制表符。
2. 注释:在代码中添加注释,以解释代码的功能和实现方式。
注释应以“%”开头。
3. 行长:代码行长不宜超过一定长度,一般建议不超过80个字符。
4. 变量命名:变量名应具有描述性,遵循MATLAB命名规范。
5. 函数命名:函数名应具有描述性,遵循MATLAB命名规范,并使用驼峰命名法。
matlab菜鸟教程

matlab菜鸟教程Matlab是一种强大的数值计算和科学数据可视化软件。
它被广泛应用于工程、科学和金融等领域。
本教程将介绍Matlab的基本语法、常用函数和数据处理技巧,帮助初学者快速上手使用Matlab进行编程和数据分析。
1. Matlab环境搭建安装Matlab:在MathWorks官网下载并安装Matlab软件,按照向导进行安装。
打开Matlab:双击桌面上的Matlab图标或在开始菜单中找到Matlab并点击打开。
2. Matlab基本语法变量和常量:使用等号(=)将数值或表达式赋给变量。
例如:x = 5, y = sin(x)。
数据类型:Matlab支持多种数据类型,包括数值型、字符型和逻辑型等。
常用的数值类型有整数型、浮点型和复数型。
矩阵和数组:Matlab中的基本数据结构是矩阵和数组。
可以使用方括号([])定义矩阵和数组,并进行矩阵运算。
函数调用:Matlab提供了丰富的内置函数,可以直接调用进行数值计算、数据处理和图形绘制等操作。
条件语句:使用if语句进行条件判断,根据不同的条件执行不同的操作。
循环语句:使用for循环和while循环重复执行一段代码,根据循环条件来控制循环的执行次数。
3. Matlab常用函数数值计算:Matlab提供了多种数值计算函数,如sin、cos、exp、log等,用于计算三角函数、指数函数和对数函数等。
数据处理:Matlab提供了丰富的数据处理函数,如mean、sum、max、min等,用于计算数组的均值、总和、最大值和最小值等。
图形绘制:Matlab可以绘制各种类型的图形,如线图、散点图、柱状图和饼图等。
可以使用plot、scatter、bar、pie等函数进行图形绘制。
数据导入和导出:Matlab可以方便地导入和导出各种数据格式,如文本文件、Excel文件和图像文件等。
可以使用readtable、writetable、imread、imwrite等函数进行数据的读写操作。
matlab语法基础

matlab语法基础MATLAB是一种非常流行的科学计算工具,它被广泛用于工程、科学和金融等领域。
其语法基础作为学习和使用MATLAB的最基本要素,本文将详细介绍MATLAB语法基础。
MATLAB基础MATLAB语言是一种矩阵型语言,所有的变量和数据都被视为矩阵或向量。
MATLAB具有简单、易学以及高效的计算语言特点,被广泛应用于科学、数学、工程、数据处理等领域,是一种十分实用的工具。
1.变量在MATLAB中,可以通过变量存储各种类型的数据。
变量名可以是任何字母、数字和下划线的组合,并且大小写是不敏感的。
例如:a = 1; % 变量a存储整数1b = 'Hello World'; % 变量b存储字符串'Hello World'c = [1 2 3; 4 5 6]; % 变量c存储一个2×3的矩阵2.数组在MATLAB中,数组是特殊的矩阵。
可以使用如下语法来创建数组:a = [1 2 3 4 5];% 一维数组b = [1 2 3; 4 5 6; 7 8 9];% 二维数组3.矩阵运算MATLAB提供了一系列的矩阵运算函数,这些函数可以从多个矩阵中计算出一个新的矩阵。
常见的矩阵运算函数包括:% 全元素乘方A = [1 2; 3 4];B = A.^2;4.控制语句MATLAB中的控制语句也比较常见,包括:% if语句if score >= 60disp('及格');elsedisp('不及格');end% for循环for i = 1:10disp(i);end5.函数MATLAB中的函数是一种特殊的程序,用于完成一些特定的操作或计算,并且可以被其他程序调用。
函数可以接受输入,完成一系列操作,然后返回输出。
下面是一个简单的函数例子:function y = square(x)% 计算输入x的平方,并返回结果y = x^2;end在函数中,使用function关键字定义函数名和输入输出参数,最后使用end语句结束函数定义。
Matlab的基本语法和常用函数

Matlab的基本语法和常用函数Matlab是一种非常强大且流行的数值计算软件,被广泛应用于科学研究、工程设计和数据分析等领域。
在本文中,我们将介绍Matlab的基本语法和常用函数,以帮助初学者快速上手并掌握此工具的基本使用方法。
一、Matlab的基本语法1. 变量和赋值:在Matlab中,可以使用任何有效的字符作为变量名。
要创建一个变量并赋值,只需使用等号(=)即可。
例如,将整数值10赋给变量a,可以使用以下语句:a = 102. 数值运算:Matlab支持基本的数值运算,如加法、减法、乘法和除法。
例如,要计算两个变量a和b的和,可以使用加法运算符(+):c = a + b3. 矩阵操作:Matlab是一种强大的矩阵计算工具,支持矩阵的创建、加减乘除运算以及转置等操作。
例如,要创建一个2x2的矩阵,并将其赋给变量A,可以使用以下语句:A = [1 2; 3 4]4. 条件语句:Matlab提供了条件语句用于根据不同的条件执行不同的操作。
常用的条件语句包括if语句和switch语句。
例如,要根据某个变量的值执行不同的操作,可以使用if语句:if a > 0disp('a is positive')elsedisp('a is negative or zero')end5. 循环语句:Matlab支持多种类型的循环语句,如for循环、while循环和do-while循环。
例如,要计算1到10的累加和,可以使用for循环:sum = 0;for i = 1:10sum = sum + i;end二、Matlab的常用函数1. plot函数:plot函数用于绘制二维曲线图。
通过提供横坐标和纵坐标的向量,可以绘制出对应的曲线图。
例如,要绘制函数y = sin(x)的图形,可以使用以下语句:x = linspace(0, 2*pi, 100);y = sin(x);plot(x, y)2. linspace函数:linspace函数用于生成一个线性间隔的向量。
matlab语法

matlab语法MATLAB是一种强大而又灵活的计算机语言,最初由美国的研究机构开发而成,并已得到广泛应用。
在科学、工程、金融和医学等领域应用广泛。
MATLAB语法相对来说比较容易学习,本文将分步骤介绍MATLAB语法的相关内容。
1. 基础数学运算MATLAB最基础的数学运算包括加法、减法、乘法、除法和求幂,可以使用如下的操作符实现:加法: +减法: -乘法: *除法: /求幂: ^例如,要计算3的4次幂,可以输入3^4,计算结果会显示在MATLAB命令窗口中。
2. 变量和数据类型在MATLAB中,可以使用变量来存储数值和其他数据类型。
变量名可以是字母、数字或下划线,以字母开头。
MATLAB支持的数据类型包括数值、字符和逻辑值。
数值类型包括整数和浮点数,例如:整数:5浮点数:3.14字符类型用单引号括起来表示,例如:字符:'Hello World!'逻辑类型包括true和false。
3. 条件语句在MATLAB中,可以使用条件语句来根据条件执行不同的代码块。
常见的条件语句包括if语句和switch语句。
if语句根据一个条件判断执行哪些代码块,例如:if x > 0disp('x is positive')elseif x == 0disp('x is zero')elsedisp('x is negative')endswitch语句根据一个变量的值执行不同的代码块,例如:switch xcase 1disp('x is equal to 1')case 2disp('x is equal to 2')otherwisedisp('x is not equal to 1 or 2')end4. 循环语句在MATLAB中,可以使用循环语句来重复执行一组代码。
常见的循环语句包括for循环和while循环。
MATLAB的基本语法

4、四则运算与幂运算
+ - * \ / ^.
*
.\
./
.^
只有维数相同的矩阵才能进行加减运算。
注意只有当两个矩阵中前一个矩阵的列数和后一个 矩阵的行数相同时,才可以进行乘法运算。
矩阵右除a\b运算等效于求a*x=b的解;而左除a/b 等效于求x*b=a的解。(与常数除法对照,一样的)
只有方阵才可以求幂。
explode = [0 1 0 0 0];
感谢下 载
二、常量
常量表达形式:-3.2、-.2、3.2、3.2e-3、3-3i、3-3j…
注:➢3.2e-3是科学记数法;
➢规范的复数表达形式是3-3i,如果用j表示虚部, 将自动转换为i。
系统预定义了一些常量:
pi:圆周率
eps:计算机的最小数
inf:无
realmin:最小正实数
realmax:最大正实数
a=
1
4
>> b=[1+2i 2-7 i]'
b=
1.0000 - 2. 0000i
2
5
36
2.0000 + 7. 0000i
>> b=[1+2i 2-7 i].'
b=
1.0000 + 2.
2、提取矩阵中的元素
A(m,n):提取第m行,第n列元素 A(:,n):提取第n列元素 A(m,:):提取第m行元素 A(m1:m2,n1:n2):提取第m1行到第m2行和第n
>> a=linspace(1,10,10) a=
1 2 3 4 5 6 7 8 9 10
(3)a=logspace(n1,n2,n) 在对数空间上,行向量的值从10n1到10n2,数据 个数为n,缺省n为50。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
矩阵整体的幂次运算
MATLAB的乘幂函数”^”、指数函数expm、
对数函数logm、和开方函数sqrtm是对矩阵 进行的,另外,还有矩阵乘法和除法也是 把矩阵作为一个整体来运算。 除此之外,其他MATLAB函数都是对矩阵 中的元素分别进行,
2.3
元素群运算
数组及其赋值 元素群的四则运算 元素群的幂次运算 元素群的函数 元素群运算能大大简化编程,提 高运算的效率,是 MATLAB 优于其他 许多语言的一个特色。
矩阵“除法”
线性方程组D*X=B,如果D非奇异,即 它的逆矩阵inv(D)存在; 则其解用MATLAB表为 : X=inv(D)*B=D\B 符号‘\’称为左除,即分母放在左边。 左除的条件:B的行数等于D的阶数(D 的行数和列数相同,简称阶数)
矩阵右除
若方程组表为为X*D1=B1,D1非奇异,即 它的逆阵inv(D1)存在。 则其解为 X=B1*inv(D1)=B1/D1 符号‘/’称为右除。 右除的条件:B1的列数等于D1的阶数(D1 的行数和列数相同,简称阶数)
随机数矩阵(n×m阶)
正态随机数矩阵(n×m阶)
eye(n)
linspace(xs,xf,N)
单位矩阵( n×n方阵)
均分向量(1×N阶数组)
矩阵组合与显示
大矩阵可由若干个小矩阵组成,但必须其行 列数正确,恰好填满全部元素。 一个矩阵中所有元素用同一显示格式。有一 个是小数则都用小数; 当矩阵中的最大元素小于0.001,或其最小元 素大于1000时,MATLAB会把其公因子提出 来。 元素大小差别很大时,不宜用矩阵显示。
mesh(X,Y,Z,C)和surf(X,Y,Z,C)
简便绘图命令
MATLAB中提供的有
ezplot, ezmesh,ezsurf等 ATLAST提供的有 plotline, plotamgle, eigplot 等 本书提供的有 ezplplot, ezplplot2, ezplplot3等 这些将在用到时作介绍。
四
变量检查
变量检查命令who,whos
打开工作空间视窗 在检查中不显示内部变量
eps、realmax、realmin、pi、 i、j、inf、NaN
五 特殊矩阵赋值函数
zeros(n,m)
ones(n,m)
全零矩阵(n×m阶)
全么矩阵(n×m阶)
rand(n,m)
randn (n,m)
将101~125等25个数填入一个5行5列的表
格中,使其每行每列及对角线的和均为565。
基本绘图方法
(1)直角座标中的两维曲线
(2)多条曲线的绘制
(3)其他坐标二维绘图
(4)屏幕控制
(5)三维曲线和曲面
2.5 基本绘图方法
直角座标中的两维曲线
plot命令的基本格式 plot(Y) = plot(n,Y) plot(t,Y) plot(t,Y,’:w’)
三维曲面
三维曲面的自变量是两维矩阵X和Y,代表xy 平面上点阵的x,y坐标; 第三维因变量 z 是 x,y 的函数, z=f(X,Y) 得到 的数组与X,Y同阶; 空间曲面的绘制 mesh(X,Y,z) 或mesh(z)
X,Y为两维自变量矩阵,表示平面上的点阵; Z是X,Y的函数,所以是两维的因变量矩阵; 变元C是颜色,可以表示第四维空间。
c(i,j)=a(i,1)*b(1,j) + a(i,2)*b(2,j) + … + a(i,p)*b(p,j) = ∑pa(i,k)*b(k,j)
矩阵的乘法
两矩阵相乘C=A*B的条件是A的列数
等于B的行数,简称内阶数相同。设 矩阵A 为n×p阶,矩阵B为p×m阶, 则C是n×m阶。内阶数不同的矩阵 不能相乘。 不符合交换律:A*B≠B*A,左乘不 等于右乘; 若一个变量是标量,则按标量乘法。
数的八种显示格式
MATLAB 命令 format long format short e 显示形式 3.14159265358979 3.1416e+000 说 明 16位十进制数 5位十进制数加指数
format long e
format hex format bank format + format rat format short (默认)
MATLAB中的数
MATLAB中的实数只有一种数据格式, 那就是双精度(即64位二进制或8个字节), 它的有效值是十进制16位,动态范围是10 的±308次幂。 2.2251×10 –308——1.7977×10+308 数的存储和运算全按同一格式进行, 使编程简单,减少差错,改善人机交互,付 出代价是内存空间和运行速度,形成 MATLAB的一大特色。
矩阵的乘法
a(1,1) a(1, p) b(1,1) b(1, j ) c(1,1) c(1, m) b(2, j ) c(i, j ) a(i,1) a(i,2) a(i, p) * c(n,1) c(n, m) b( p,1) b( p, j ) a ( n ,1) a ( n , p ) b(1, m) b ( p , m)
故有 X=[x1;x2;x3]=A\b
用矩阵除法解线性方程组
解方程组 6 x1 + 3 x2 + 4 x3 = 3 -2 x1 + 5 x2 + 7 x3 = -4 8 x1 - 4 x2 - 3 x3 = -7 的程序为: A = [6,3,4; -2,5,7; 8,-4,-3]; B = [3;-4;-7]; X = A\B
进行运算。为了与矩阵作为整体的运算 符号相区别,要在运算符 “*、/、\、^”前加一点符号“.” 。 元素群运算的英文原文是‘数组运算’ (Array Algorithm),实际上它适用于任 何阶的矩阵,故取名‘元素群运算’更 为确切。
三、元素群的函数运算
所有的MATLAB函数都适用于作元素
群运算,只有专门说明的几个除外。 就是*、/、\、^ 运算符和sqrtm、expm、 logm三个函数。 实例,做一个三角函数表: x=[0:0.1:pi/4]'; [x,sin(x),cos(x),tan(x)]
3.14159265358979e+0
400921fb54442d18 3.14 + 355 / 113 3.1416
16位十进制加指数
16位十六进制数 两位小数 正、负或零 有理数分数近似 二位整数, 四位小数
二、矩阵及其元素的赋值
格式1:变量=表达式(或常量) 格式2:表达式
表达式中的运算符有:
最后一个变元前一个符号为线型(点型) 后一个字母表示颜色
线型、点型和颜色
表2-11 线型、点型和颜色 标志符 颜色 标志符 线型和点型
y
m
黄
品红
.
o
点
圆圈
c
r g b w k
青
红 绿 兰 白 黑
x
+ *长划线
三维曲线
空间曲线绘制
空间曲线的参数方程:x=x(t),y=y(t),z=z(t) 自变量 t 即为参数向量, 故x,y,z为同样长度的数据向量 plot3(x,y,z)可以画出空间曲线。
线性方程组表为矩阵相乘
x1 + 2x2 + 3x3 = 2 3x1- 5x2 + 4x3 = 0 7x1 + 8x2 + 9x3 = 2 可以表为 1 2 3 x1 2 A * X 3 5 4 x2 0 b 7 8 9 2 x3
加(+)、减(-)、乘(*)、左除(\)、右除(/)、 指数(^)、共軛转置(‘)、空矩阵([])等。
表达式的结尾标点:若为分号‘;’,不显示; 若为逗号‘,’或直接回车,显示运算结果。
三、复数
虚数符号MATLAB启动时定为i,j,可以
不用乘号,连写在数字后面。 如果用户在程序中另外給i,j赋值,则它 们的虚数意义就失效。 conj(x)表示共軛,即把x的虚部反号。 ‘ 是共軛转置运算符,对实矩阵把行 号与列号交换,对复矩阵除行列交换外, 还要把矩阵元素取共軛。
2.2 矩阵的初等运算
(1)矩阵数值的表示方法; (2)矩阵的加减乘法; (3)矩阵的除法和线性方程解; (4)矩阵的乘方和超越函数;
矩阵的加减法
两矩阵进行加减的条件是其行数和列
数相同,简称阶次相同,矩阵的加减 即其对应元素的加减。 size(A)=size(B) 如果其中一个变量是标量,则会自动 扩展成各元素均取此标量值的同阶次 矩阵。
第二章 基本语法
2.1 变量及其赋值 2.2 矩阵的初等运算
2.3 元素群运算
变量及其赋值
(1)标识符与数 (2)矩阵及其元素的赋值 (3)复数 (4)变量检查 (5)基本赋值矩阵
一、标识符与数
标识符:标识符是标志变量名、常量名、
函数名和文件名的字符串的总称。 MATLAB中的标识符最长允许63个字符 , 合法字符是52个英文字母(大小写看成 不同字符)、10个数字和下划线。 第一个字符必须是英文字母.
一、数组及其赋值
数组通常是指单行或单列的矩阵,也称
为向量。 其赋值方法:
(1) x=[初值:增量:终值] (2) 线性分割函数 x=linspace(起点,终点,点数) (3) 对数分割函数 logspace(起点对数,终点对数,点数)
二、元素群的四则和幂次运算