MATLAB速成学习笔记

今天开始学MATLAB

生成矩阵

直接生成矩阵

a = [1,2,3:4,5,6:7,8, 9]

冒号一维矩阵a=开始:步长:结束,步长为1可省略

b = 1:1:10; % 1,2....10
b = 1:10: %与上一个等价

函数生成
linspace(开始, 结束,元素个数),等差生成指定元素数的一维矩阵,省略个数则生成100个

c = linspace(0, 10, 5)

特殊矩阵

e = eye(4) % eye (维数)单位阵,斜正三角
z = zeros(1,4)  % zeros (维数) 全零阵
o = ones(4,1)  % ones (维数)1阵
r = rand(4)  % rand (维数)0~ 1分布随机阵,方阵
rn = randn(4) %randn(维数) 0均值 Gaussian分布,随机阵

矩阵运算

diag_a = diag(a,k)  % diag(行向量,主对角线上方第k条斜线)用行向量生成对角阵
tril_a = tril(a,k)  % tril(矩阵, 主对角线上方第k条斜线)生成矩阵的下三角阵,triu上三角阵
%加、减、乘、乘方
  a*a
%点运算
% a.*b,a./b,a.\b,a.^b 对应元素的*./,\.运算
  a,*a
%逆矩阵
  pinv(a) % 伪逆矩阵,当a不是方阵,求广义逆矩阵;当a是可逆方阵,结果与逆矩阵相同;例如a*x=b;求x就得:x=pinv(a)*b

特征值,特征向童

解释:A为n阶矩阵,若数λ和n维非0列向量x满足Ax=λx,那么数λ称为A的 特征值,x称为A的对应于特征值λ的 特征向量。式 Ax=λx也可写成( A-λE)x=0,并且|λE-A|叫做A 的 特征多项式。当特征多项式等于0的时候,称为A的特征方程,特征方程是一个齐次线性方程组,求解特征值的过程其实就是求解特征方程的解
  [v,D] = eig(a) %输出v为特征向量,D为特征值对角阵
% *行列式
  det (a)
% *rank(a)
% *伴随
  compan(b)

矩阵的修改

%部分替换
chg_a=a
chg_a(2,3) = 4   %(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

信息获取

%矩阵的行列数
[row_a,col_a] = size(a)  % [行数,列数]
len_a = length(a)  %获取矩阵中元素的个数

多维数组

%创建
%直接法
mul_1(:,:,1) = [1,2,3:2,3,4] 
mul_1(:,:,2) = [3,4,5:4,5, 6]
zeros(1,6)  %创建一个16列的一维数组
zeros(2,4)  %创建一个24列的二维数组
zeros(2,4,2) %创建一个242页的三维数组

%扩展法
mul_2 = [1,2,3:2,5,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): %把a1、a2按照“3”维连接

字符串

%创建
str0 = 'hello world'  %单引号引起
str1 = 'I''m a student'  % 字符串中单引号写两遍
str3 = ['I''m'  'a''student'] %方括号链接多字符串
str4 = strcat(str0, str1)  % strcat连 接字符串函数
str5 = strycat(str0,str1)  % strvcat连接产生多行字符串
str6 = double(str0)  % 取str0的ASCII值 ,也可用abs函数
str7 = char(str6)  %把ASCII转为字符串
%操作
%比较
strcmp(str0, str1) %相等为1,不等为0
strncmp(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右对齐,1eft左对齐,center 中间对齐
strtrim(str0) %删除str0开头结尾空格
eval(str0)  %将str0作为代码执行
%%
%转换
%如num2str,将数字转字符串,dec2hex, 将十进制转十六进制
str_b = num2str(b) ;

选择结构

%%
a=5
x =[1,2];y=[3,4]
%if-elseif-else-end
	if a>0
		disp(x) ;
	elseif a==0 
		disp(a) ;
	else
		disp(a-1) ;
	end
%switch-case-otherwise-end
	switch a
		case 0
			disp(a)
		case 1
			disp (a+1)
		otherwise
			disp(' aaa' )
		end
%try-catch
	try	
	   a;	
	   disp('存在''a''变量')	
	catch	
	   disp('不存在''a''变量')	
	end

循环结构

% for循环变里=初值:步长:终值一end
for i=0:1:10 %步长为负,则初值大于终值
	disp(i) %循环体内不可对循环变里做修改
end
% while-end
while a>2
	disp(a)
	a=a-1;
end

%m文件

%脚本文件:没有输入输出参数,执行后变里结果返回工作空间,可直接运行
%以下是脚本文件,文件名假设为**exp. m**
clear
r=5
s = pi*r*r;
p = 2*pi*r;
disp(s)
disp(p)
%以下是调用
exp

%函数文件:以function开头,有输入输出,变量为局部变量不返回工作空间,需要调用
%以下是函数文件
%文件命名应与函数名一致,系统找文件名circ.m
%CIRC计算圆面积和周长% 简单说明
%参数:输入参数r:圆半径;输出参数s:圆面积,p:周长% 详细说明

function [s,p] = circ(r) 
    s = pi*r*r;
    p = 2*pi*r;
end
%以下是调用
**********************************
[a, b]=circ(6); %返回为多个参数时,若写
 a=circ(5); %则保留第一个返回值
%*以下是带子函数的函数文件
***********************************
function y= circ(w) % 主函数放第一个,函数名为key
	if  w==0
	  y=type0(w); %调用子函数type0
	else
	  y=type1(w);
	end
end

function y0 = type0(a) % 子函数,各子函数之间顺序无所谓
	y0 = a+1;
end
function y1 = type1(a)
	y1 = a+4;
end

%函数输入输出参数可以不定
%nargin:输入参数个数,nargout: 输出参数个数
%varargin:输入参数内容的元胞数组,varargout: 输出参数
%以下是函数文件

function varargout = circ(varargin)
	x = length(varargin);
	varargout{1} = x;
	varargout{2} = x+1;
end

二维曲线绘制

%基本函数
% plot(y)
x = 0:0.1:2*pi;
y1 = sin(x);
y2 = cos(x);
plot(y1);
figure;
%开启新绘图窗口,下一次绘图在新窗口
plot(y2);
% 纵坐标为y的值;横坐标自动为元素序号(角标+1),此处为1~9
% y为向量
% y为矩阵
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'): %蓝色点线圆圈
% b藍g绿r红c青m紫y黄k黑w白
% -实线:点线-虚线-.点画线
% .实点o圆圈x叉+十字*星号s方块d钻石v下三角“上三角<左三角>右三角p五角星h六角
%坐标轴
p1ot(x,y1):
axis([-1*pi,3*pi, -1.51.5]): %规定横纵坐标范围
%图形修饰
%标题标签
title('a title'): %图像标题
xlabel('this is x'): % x轴标记,同理还有ylabel,zlabel
%图例设置
legend('hahaha',’ location', 'best'): % str的顺序与绘图顺序一致: 'best' 指图例位置最佳化,
%图形保持
plot(x,y1);
hold on:
%在原有窗口y1曲线上增加绘制下一个图形
plot(x, y2): % y2在同一窗口内被绘制
hold off:
%分割绘制
subplot(22, 1): % 分割成2x2区域,在第一块区域绘制下一个图形
plot(x, y1): % y1被绘制在4块区域的第一块
subplot(2,2, 2): % 分割方法相同,区域改变
plot(x, y2): % y2在第二块区域

二维特殊图形绘制

%柱状图
bar(x,y, width, '参数'); % x横坐标向量,m个元素: y为向里时,每个x画一竖条共m条,矩阵mxne
% width宽度默认0. 8,超过1各条会重叠:
%参数有grouped分组式,stacked堆栈式: 默认grouped
%bar垂直柱状图,barh水平柱状图,bar3三维柱状图,barh3水平三维柱;
%饼形图
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'); %阶梯图,参数同plot .
stem(x, y, 'fill'); %火柴杆图,参数fi11是填充火柴杆,或定义线形
candle(HI, LO, CL, OP); % 蜡烛图: HI为最高价格向量,LO为最低价格向童, CL为收盘价格向向量, OP为
%向量图
compass(u, v, 'b-o'); % 罗盘图橫坐标u纵坐标v
compass(2, 'b-o'); % 罗盘图复向量Z
feather(u, v, 'b-o'); % 羽毛图横坐标u纵坐标v

三维曲线曲面绘制

% 三维曲线
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*2+Y*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.^2+y.^2; %以上部分同上
surf(x, y, z) % 与上一个类似

多项式

%创建
p = [1, 2,3 ,4]; %系数向里,按x降幂排列,最右边是常数
f1 = poly2str(p, 'x'); %生成好看的字符串f1=x^3+22+3x+4,不被认可的运算式
f2 = poly2sym(p); % 生成可用的符号函数f2=x^3+2*x^2+3*x+4
%求值
x=4;
y1 = polyval(p, x); %代入求值;若x1为矩阵,则对每个值单独求值
%求根
r = roots(p); % p同上,由系数求根,结果为根植矩阵
p = poly(r);
% 由根求系数,结果为系数矩阵
%

数据插值
一维插值

%
x =[-3,-1,0.1,3];
y = [9,1,0.1, 9]; % XY为已知点横纵坐标向量
y1 = interp1(x, y, x1, 'method' );
y2 = interp1(x, y, 2); % 差值预估在x=2的y的值,x不能超过已知范围(此处x<3)
y2 = interp1(x, y, 2,'spline');%用spline方法 (三次样条)差值预估在x=2的y的值
%  二维插值
%z1 = interp1(x, y, 2, x1, y1,'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
[Y, I] = sort(A, 1,'ascend'); % I保留了元素之前在A的位置
%求和求积累加累乘

数值计算

%()%多元函数在给定初值附近找最小值点
x =fminsearch(fun, x0);
%函数零点
x = fzero(fun, x0): %在给定初值x0附近找零点
%%
%符号对象创建
%sym函数
p = sin(pi/3);
p = sym(p, 'r'); 
%用数值p创建符号常重p; 'd'浮点数'f'有理分式的浮点数'e'有理数和误差'r'%syms函数
syms x; % 声明符号变量
f =7*x^2+ 2*x+9; % 创建符号函数

%符号运算
%加减乘除外
%'转置;==相等;~=不等
% sin, cos, tan; asin,acos, atan 三角反三角
% sinh, cosh, tanh: asinh, acosh, atanh双曲反双曲
% conj复数共轭; real复数实部; inag复数虚部; abs复数模; angle复数幅角
% diag矩阵对角; triu矩阵上三角; tril矩阵下三角; inv逆矩阵; det行列式; rank秩; poly特征多项
% |----expm矩阵指数函数; eig矩阵特征值和特征向重; svd奇异值分解;
%符号对象精度转换
digits; % 显示当前用于计算的精度
digits(16); %将计算精度改为16位,降低精度有时可以加快程序运算速度或减少空间占用
a16 = vpa(sqrt(2)): % vpa括起的运算使sqrt (2)运算按照规定的精度执行
a8 = vpa(sqrt(2)8): %在vpa内控制精度,离开这一步精度恢复
% 符号多项式函数运算
% 符号表达形式与相互转化
% 多项式展开整理
g = expand(f): %展开
h= collect(g): %整理(默认按x整理)
hl一collect(f, x): 5按x整理(降幂排列)
%因式分解展开质因数
fac = factor(h):为因式分解
factor(12): %12分解质因数
%符号多项式向里形式与计算
symsab C:
n = [a,"b, c];
roots(n): % 求符号多项式ax 2+bx+c的根
n=[1, 23]:
roots(n): %求符号多项式带入=1,b=2, c=3的根
%*反函数
f1 = finverse(f, x): %对f中的变量x求反函数
%%
%符号微积分
%函数的极限和级数运算
%常量a,b
%极限
limit(f, x,4); %f(x)。x->4
limit(f, 4); %默认变重->4
limit(f); 5默认变量->0
limit(f. z,4, right); 
%f(x).x->4+. 'left' x->4
%基本级数运算
%求和
symsum(s, x,3, 5); %计算表达式s变量x从35的级数和,或symsum(s, x,[a b])或sym
symsum (s,3,5): %计算s默认变量从35的级数和
symsum(s); % 计算s默认变量从0到n-1的级数和
%一维泰勒展开
taylor(f,x,4); % f在x=4处展开为五阶泰勒级数
taylor(f, x); % f在x=0处展开为五阶泰勒级数
taylor(f); % f在默认变里=0处展开为五阶泰勒级数
%符号微分
%单变量求导(单变量偏导)
n=1;
%常童n
fn = 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*x==b;
S = solve(eqn1); %返回eqn符号解
%多元方程组
eqn21= x-y==a;
eqn22 = 2*x+y-=b;
[Sx, Sy] = solve (eqn21, eqn22, x, y);
 % [Svar1.... SvarN]=solve(eqn1.... eqnM, var1,
[Sxn, Syn] = solve(eqn21,eqn22, x,y,” ReturnCondition',true); % 加上参数ReturnC
%其他参数(参数加上true生效)
% IgnoreProperty,忽略变量定义时一些假设
% IgnoreAnalyticConstraints, 忽略分析限制;
% MaxDegree,大于3解显性解;
% PrincipleValue,仅主值
I% Real,仅实数解
%非线性fsolve
X = fsolve(fun, XO, optimset (option)); % fun函数. m文件名; X0求根初值; option选项

clear:清除工作空间的所有变量
close all:关闭所有的Figure窗口
clc:清除命令窗口的内容,对工作环境中的全部变量无任何影响

播放视频

fileName = 'F:\1.avi'; 
obj = VideoReader(fileName);
numFrames = obj.NumberOfFrames;% 读取视频的帧数

%读取一帧视频并显示
frame = read(obj, 4); 
figure;imshow(frame);

%movie(fileName,2,40)  
%播放视频函数
implay(fileName);

录音及播放

% recObj = audiorecorder
disp('Start speaking.')

recordblocking(recObj, 5); 

disp('End of Recording.');

play(recObj);
y = getaudiodata(recObj);
plot(y);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值