matlab知识汇总
1. 基本操作
运算
MATLAB 支持+ - * / 和^(次方运算)
*,^ 支持矩阵乘法
dot(A,B) 点积
cross(A,B) 叉积
.* ./ .^ 代表对每个位置上的操作
inv(A) 矩阵求逆
变量定义
不需要定义变量类型 默认double
A=10;(加分号表示不输出结果)
A=5i+3
A='hello world'
A=[1 3 5;6 4 8];
A=eye(5) 5*5单位矩阵
A=zeros(9,8) A=ones(9,8)
linspace(1,13,6) 生成行向量 1~13均分 6个点
常用函数和命令
1.sin() ,cos()
2.eps(即e) pi()
ans
Inf 无限大
i,j 用来表示复数
- whos 观看现在所有变量
- clear A 清除变量A
clear 清除suoyou
clc 清屏 - rem(a,b) a除以b的余数
- ...用来换行写代码
输出格式
format short 输出短小数
format long 输出长小数
format rat 输出分数
矩阵访问
A(8) 从第一列开始标号 第8个
A(3,2) 第3行第2个
MATLAB中每一种操作都可以用数组替代 相应的结果也变成数组
A([1,3,5]) 代表访问A(1) A(3) A(5)
A([1,3;1,3]) 结果用22数组显示
A([1,3],[1,3]) 枚举行位置 枚举列位置 22 矩阵
访问后直接赋值就可以修改
冒号运算符
代表一个行向量
A=1:15(默认间距为1)
A=1:2:15(2为step)
矩阵函数
max(A) 矩阵中每一列最大的
max(max(A)) 最大的数
同理有min
sum(A) 每一列求和
sum(sum(A)) 全部的和
mean(A) 每一列的平均数
size(A) 每一个维度的大小
使用;和[]来把各个元素并起来
length(A) 最大维度长度
prod(A) 将每一列乘起来
2.程序编写
- %% 将代码分成若干个部分分别执行
- 输入:input('') 参数为提示输入的字符串
输出: disp(); - 选择结构:
x=input('input x ');y=input('input y ');
if x>y
disp(x);
elseif x<y
disp(y);
else
disp(y)
end
- 循环结构
x=1;
while x<=10
x=x+1;
end
disp(x);
for ii=1:10
a(ii)=ii;
end
disp(a);
4.% 用来添加注释
5.函数
function x=TT(a,b)
if a>b
x=a
else x=b
end
end
x是返回值 TT是函数名和文件名
在多个结果[]起来的时候 不要求结构类型一致
储存为test.m
调用: test(a,b)
传入的参数可以是数组 建议使用./ .* 如:
function [v]=p(d1,h)
if nargin==1
h=1;
end
v=d1.*d1.*h
end
nargin 关键字 传入参数数量
快捷定义函数方法:
f=@(x)x.*x
x=0:0.1:2;
plot(x,f(x))
3. 变量进阶
- int32(),int64() 实现强制转换
- 字符串 字符的定义统一用''
- 结构体
p.a=1;
p.b='dsf';
p=struct('a',1,'b','dsf');
- cell: 多种结构拼在一起 并且附上了位置
A{1,1}=[1,2,3;4,5,6]
A{1,2}='dsf'
注意: A(1,2) 相当于指针 A{1,2} 相当于具体元素
4.绘图
1. 二维绘图
-
plot(x,y) 在坐标轴上画出点对
plot(y) 默认x取1~n
x=0:0.1:100; y=sin(x); plot(x,y)
- hold on/off 绘制在一个图
hold on
plot(sin(0:0.1:2*pi))
plot(cos(0:0.1:2*pi))
hold off
- 描点
plot(x,y,'.');
plot(x,y,'o');
plot(x,y,'X');
plot(x,y,'-');(线形)
plot(x,y,'b'); (颜色)
可组合
plot(x,y,'b.-',x,z,'bd-')
用不同的点形 线形 等来描绘
- 加上图例
legend('L1','L2')
- 加标注
title('function');
xlable('sdf');
ylable('wer');
text(0.25,2.5,str,'Interpreter','latex') 支持latex
annotation('arrow','X',[],'Y',[]) 画箭头
-
更改性质可以直接用属性更改 也可以用命令更改(set)
-
同时画多个图,加figure命令
>> x=-10:0.1:10;
>> y1=sin(x); y2=cos(x);
>> figure,plot(x,y1);
>> figure,plot(x,y2)
- subplot(x,y,z) 画x*y个图 当前是第z个
>> subplot(2,2,2);plot(x,y); axis square
>> subplot(2,2,1);plot(x,y); axis normal
-
grid on/off 打开或者关闭网格
axis normal/square 调整坐标轴的性质
-
对数图
>> x=logspace(-1,1,100);%生成100个0.1~10的数
>> y=x.*x;
>> subplot(2,2,1); semilogx(x,y);
>> subplot(2,2,2); semilogy(x,y);
>> subplot(2,2,3); loglog(x,y)
- 双坐标轴图
>> x=linspace(0,2*pi);
>> y1=sin(x); y2=cos(x);
>> plotyy(x,y1,x,y2)
句柄AX中有两个元素 如果可以这样加标注
[AX,y1,y2]=plotyy(x,y1,x,y2);
set(get(AX(2),'Ylable'),'String','wew');
三维绘图
- 空间曲线
>> x=cos(t); y=sin(t); z=t;
>> plot3(x,y,z)
>> grid on
- 空间曲面
首先生成一个x,y的网格 才能够绘图
x=-3.5:0.2:3.5; y=x;
[X,Y]=meshgrid(x,y);
Z=x.*x-y.*y;
mesh(X,Y,Z);
surf(X,Y,Z);
5. 微积分
- 多项式微积分
存储按照系数来存储
p=[3,5,2,1];
x=linspace(-1:1);
f=polyval(p,x);
plot(x,f);
求导:
q=polyder(q);
积分:
q=polyint(q,3) %第二个是初始值
- 其他:
采用导数的定义 因此step必须非常小
对于积分x=-2:0.005:2; y=x.^3; m=diff(y)./diff(x); plot(x,y,x(1:end-1),m);
例:
对于积分:>> plot(x,y,x(1:end-1),m) >> h=0.05; x=0:h:2; >> mid=(x(1:end-1)+x(2:end))./2; >> y=4*mid.^3; >> s=sum(h*y)
y=@(x)1./(x.^3-2*x-5)
integral(y,0,2)
integral2 和integral3 可以二元积分/三元积分
6. 方程式求根
syms x;
y=sin(x)
sovle(y,x)
eq1=x+y-6
eq2=x-y+3
solve(eq1,eq2,x,y)
syms x; syms a; syms b;
y=a*x+b;
solve(y,x);
- 求导
syms x;
y=x*x;
diff(y);
- 带入
subs(y,x,2)%x=2带入到y(x)中
- 积分
syms x;
y=x*x;
int(y);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具