MATLAB知识点

矩阵运算:

x2 = [3 5];  %行向量
x3 = [3;8];  %列向量
x4 = [3 6;6 9];  %矩阵
t = [5:-1:2];   %从5到2以1递减的行向量
t = [5:-1:2]';   %从5到2以1递减的列向量
x = linspace(1,9,5);  %线性等长从1到9等距取5个点
x= logspace(-1,1,10); %对数等长从10^-1到10^1取十个点
ones(4,3)  %产生4行3列全为1矩阵
rand(4,3)  %产生4行3列值为[0,1]之间的随机数矩阵
randn(4,3) %产生4行3列满足正态分布的随机数矩阵
diag(1:5)  %diag(x),x为矩阵对角线上的数,若x为矩阵,则diag(x)输出x对角线上的数
A=[1 2 3;4 4 6;7 8 9];
diag(A)
diag(diag(A))
dr0=A(3,1);  %已知矩阵A,输入对应行列得相应值
dr1=A(3,:);  %已知矩阵A,输入对应行后,在列的位置输入:可得对应行
dr2=A(:,1);  %已知矩阵A,输入对应列后,在行的位置输入:可得对应列
dr3=A(2,end); %已知矩阵A,索引第二行最后一个数据
dr4=A(end,2); %已知矩阵A,索引第二列最后一个数据
dr5=A(end,end); %已知矩阵A,索引第最后一行,最后一列的数据
dr6=A(2:3,1:2); %已知矩阵A,索引该矩阵第二行到第三行,第一列到第二列的数据
A(1,1)=10;  %给矩阵A的第一行第一列这个数赋值
dr1 = dr1+1; %给dr1这个行向量整体加1 
max(A) %找出矩阵中每一列的最大值
max(max(A)) %找出矩阵A的最大值,最小值同理
[dr,dc]=find(A==max(max(A))); %找矩阵中最大值的行列
sqrt(A) %对矩阵A内每一个数开根
dr1 * dr2; %行向量和列向量相乘,也可以是矩阵A和矩阵B相乘,必须是行乘行,列乘列,得标量
dr1 .* dr2'; %点乘,两个相点乘矩阵必须行列相等,对应位置数相乘,输出新矩阵
dr1 + dr2'; %矩阵相加,对应位置上的数相加,输出新矩阵
z=1+2i;
real(z)  %求z实部
imag(z)  %求z虚部
abs(z)   %计算复数幅值,若z为实数,则abs(x)相当于求绝对值
angle(z)  %计算复数相角,注意angle(x)输出的是一个弧度值(rad)
angle(z) * (180/pi); %若要输出对应角度,需要乘180/pi
rad2deg(angle(z))   %也可以直接使用rad2deg(x)函数,将弧度直接转化为角度
B = [1+2i 3+i ; 7-3i 5+2i];  %B为一个复数矩阵
abs(B)  %求矩阵中每一个数对应的幅值
[row,col]=size(B);  %size(x)求出矩阵x的行数和列数
[row,~]=size(B);  %size(x)求出矩阵x的行数
[~,col]=size(B);  %size(x)求出矩阵x的列数
[row,col]=find(A == 4);  %找到矩阵A中4的位置
eig(A)  %产生一个列向量表示A的特征值
[X,D]=eig(A);   %输出矩阵A的特征值和特征向量,X为矩阵形式的A的特征向量,D为矩阵形式的A的特征值
poly(A)  %求矩阵A的特征方程的系数
roots(poly(A)) %由矩阵特征方程系数来求矩阵特征方程的根,由eig(x)求得的矩阵A的特征值与该处求得的特征方程的根相等
a=[3 10 25 36 50];   %a中值为多项式x1系数
b=[1 2 10];          %b中值为多项式x2系数
c=conv(a,b);       %由卷积conv(x1,x2)求多项式x1和x2乘积的多项式的系数
[q,r]=deconv(a,b); %由解卷积求得多项式x1和多项式x2的商和余数,即x1除以x2
expm(A)  %求矩阵A的指数矩阵
inv(A)   %矩阵A求逆

基本作图方法:

t =[0:0.01*pi:2*pi];  %定义时间变量t,设置取点间隔为0.01pi,时间长度为2pi
y=sin(3*t);   %定义y是一个关于t的响应函数
figure(1);
plot(t,y);    %画出y的图像,注:二维线型图用plot(t,y)
grid;   %添加网格线
title('plot of sin(3t)');    %添加图形标题
xlabel('t/s');    %添加x轴标题
ylabel('sin(3t)');  %添加y轴标题
text(pi,sin(3*pi),'sin(3t)'); %在点(pi,sin(3*pi))处标记sin(3t)
gtext('sin(4)'); %用光标选择在需要的位置标注sin(4)
xlim([0 2*pi]); %将x的区域限制在[0,2pi]
ylim([-2 2]); %将y的区域限制在[-2 2]

figure(2);
plot(t,y,'--');  %使用短实线作图,还可以用: -.,在没有设置的情况下默认用实线-
plot(t,y,'--o');  %点绘图,可用 + o * x 和线绘图组合
plot(t,y,'-r')   %选择图线颜色-r红色 -g绿色 -b蓝色(默认为蓝色) -y黄色 -m紫色 -c青色 -k黑色
plot(t,y,'LineWidth',3) %选择线的粗细,系统默认为0.5
x=[0: 0.1*pi : pi]; %角度为从0到π,间隔0.1π
y=[0:1:10];%半径为从0到10,间隔为1.	
polar(x,y) %做关于x,y的极坐标图
x=[1:1:100]; y=[1:10:1000]; 
loglog(x,y)  %将x和y化为以10为底的对数坐标图即x轴为log10x,y轴为log10y
semilogx(x,y);%x轴用log10变换,但y轴不变
semilogy(x,y);%y轴用log10变换,但x轴不变

figure(3)
%subplot(m,n,p) 将窗口分为m乘n个子窗口,p代表当前的子窗口。
t=[0 : 0.01*pi : 2*pi];
y1=sin(t); 	y2=sin(2*t);
y3=sin(t)+sin(2*t);	y4=sin(t).*sin(2*t);
subplot(2,2,1)
plot(t,y1); grid; xlabel('t (sec)'); ylabel('y_1=sin(t)');
subplot(2,2,2)
plot(t,y2); grid; xlabel('t (sec)'); ylabel('y_2=sin(2t)');
subplot(2,2,3)
plot(t,y3); grid; xlabel('t (sec)'); ylabel('y_3=sin(t)+sin(2t)');
subplot(2,2,4)
plot(t,y4); grid; xlabel('t (sec)'); ylabel('y_4=sin(t)*sin(2t)');

figure(4) %三维作图
t=[0 : 0.1*pi : 6*pi];  %生成时间向量
x=cos(t);	y=sin(t);	
z=t;  %z为时间轴,x和y为cos和sin函数
plot3(x,y,z); grid; 	   %三维绘图
title('Three-dimensional coil');
xlabel('x-axis'); ylabel('y-axis'); zlabel('z-axis');

显示三维图形的表面,需要用函数meshsurfmesh 只画出线的轮廓,并给线赋予颜色,颜色随z轴变化,而surf还给面赋予颜色,以下为创建一个三维球面的例子:

n=10; [x,y,z]=sphere(n); %创建球面
figure(1); mesh(x,y,z); axis('equal'); title('Mesh plot'); 	
xlabel('x-axis'); ylabel('y-axis'); zlabel('z-axis');
figure (2); surf(x,y,z); axis('equal'); title('Surf  plot'); 
xlabel('x-axis'); ylabel('y-axis'); zlabel('z-axis');

Matlab数据结构:


%%数值型数据和逻辑型数据
%整数类型
a1=zeros(10,10,'int8');  %生成的矩阵里的数据为int8有符号一字节整数,范围是-128~127,uint8为无符号,范围是0~255
a2=a1-130; %超限,只能到-128
%浮点数型
a3=double(a1);   %若整数加小数那么先对该小数进行四舍五入取到整数,再将其与整数相加
a3=a3+0.3;
%逻辑型数据
a4=logical(a3); %对所有非零值都赋1,对零值赋0
a4=logical(a1); 
%%字符型数据
a5='Apple';
a6=[a5,a5]; %将两个a5字符连在了一起
a7=a5(1); %可以引用字符串的第n个字符
a8=int8(a5); %得到a5字符串中每个字符对应的ASCALL码
%%结构体型数据
a9=struct('name','liming','sex','boy','age','16');  %后一项与前一项组成整体,即两两相邻项为一组
a9.name;  %引用结构体相应字段得到该字段对应的值
a9.name='xiaohua'; %可以直接修改相应字段的值
a9(2)=struct('name','zhangsan','sex','boy','age','18');  %此时a9(2)与a9组成了一个结构体数组
a9(2).sex; %引用时需注明引用数组中的哪一个,修改同理

Matlab循环结构:

clear all
sum=0;
%运用for循环,从1加至100
for i=1:100
    sum=sum+i;
end
%运用while循环,从1加至100,并用if判断sum是否大于1000,是则终止循环
sum=0;
i=1;
while i<=100
    sum=sum+i;
    i=i+1;
    if sum>1000
        break;
    end
end

Matlab函数编辑与调用:

%%函数的编辑与调用
%函数变量由输入变量和输出变量组成,其中输入变量和函数中的变量都不会出现再工作区
%他们属于局部变量,但输出变量会出现在工作区

%编写函数文件
function [ sum ] = findsum( k )
sum=0;
i=1;
while i<=k
    sum=sum+i;
    i=i+1;
end


end

%使用函数句柄
fun=@(x,y)x.^2+y.^2;  %括号内是函数的输入变量,括号后面是函数本体

Matlab科学运算:

 

syms a t s  %定义算子
F1=laplace(sin(a*t)+cos(a*t)); %拉普拉斯变换,t和s都可以省略
f=ilaplace(F1)  %拉普拉斯逆变换
fx=ilaplace(sym('1/s'));  %求1/s的拉式反变换

 

clear all;
syms x y(x);
dsolve('x*Dy+y-exp(x)','y(1)=2*exp(1)','x'); %最后一个参数指定要求关于x的解析解
%dsolve('x*Dy+y-exp(x)','y(1)=2*exp(1)'); %没有参数x说明要求通解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值