文章目录
matlab脚本基础教程
矩阵和数组
创建矩阵
直接赋值的方法,逗号或空格用来分列,分号用来分行。
a=[1 2 3 4];%1×4行向量
b=[1,2,3,4];
c=[1;2;3;4];%4×1列向量
利用zeros,ones来创建矩阵。
zeros(3);%3×3数值为0的方阵
zeros([2,3]);%2×3数值为0的矩阵
ones(3);%%3×3数值为1的矩阵
ones([2,3]);%2×3数值为1的方阵
利用linspace,生成等间距的向量。
l1=linspace(-10,10);%-10到10等间距生成100个点
l2=linspace(-10,10,5);%-10到10等间距生成5个点
矩阵转置
A=[1 2 3 4];%1×4行向量
B=A';%4×1列向量
处理矩阵
矩阵相加,必须满足维度相同。如果维度不相同,一定情况下也可以相加,参考矩阵相加的隐形规则。
A1=[1,2;3,4];
B1=[5,6;7,8];
C1=A1+B1;
矩阵乘以常数和矩阵点乘。矩阵叉乘参考matlab的help。
A2=[1,2,3;4,5,6];
B2=[1,2,3;4,5,6];
k=2;
C2=k2*A2;
C3=A2.*B2;
访问矩阵中的元素。:作为数组的下标时,指的是一个维度的所有下标。
A3=[1,2;3,4;5,6]
A3(2,1)%第2行第一列的元素
A3(:,1)%第一列
A3(2,:)%第二行
数据类型
整数和浮点数
matlab默认存储的数值类型是double。当不做类型转换时,数值的类型就是double类型。
数值类型有如下几种:
数值类型转换:
intvar=int8(256)
uintvar=uint8(256)
字符数组和字符串
字符数组常量和字符串常量
mychar='hello world';
mychar(1)
str="hello world";
str(1)
字符数组和字符串的相互转换
char(str)
string(mychar)
字符串的处理
str1="250"
num=str2double(str1)%字符串转double类型
str2="a,b,c"
split(str2,',')%字符串分隔
eval("a"+num2str(1)+"="+"3")%将字符串转换成matlab表达式
表
通过列向量创建表。
T = table(var1,...,varN)
根据输入变量 var1,...,varN
创建表。变量的大小和数据类型可以不同,但所有变量的行数必须相同。
name=["张三","李四","王五"]';
years=[15,16,17]';
T=table(name,years)
创建空表,设置行名称,列名称,和数值类型
T1=table('Size',[3,3],'VariableTypes', {'string','double','int8'}...
,'VariableNames',{'别名','体重','年龄'},'RowNames',{'张三','李四','王五'})
通过readtable读取excel中的表格
filename="C:\Users\shnel\Desktop\采购\采购汇总清单.xlsx";
T2=readtable(filename,'ReadVariableNames',false,'Range','H3:J15');
元胞数组
元胞数组不同于,普通数组,他的内容可以是任何的数据类型。创建元胞数组需要用花括号,访问元胞数组的成员也用花括号。
C = {1,2,3;'text',rand(5,10,2),{11; 22; 33}}
C{2,1}%访问元胞数组中的成员需要用花括号
matlab循环及条件语句
条件语句
if语句
基本语法:
if expression
statements
elseif expression
statements
else
statements
end
switch语句
基本语法:
switch switch_expression
case case_expression
statements
case case_expression
statements
...
otherwise
statements
end
与C++和C不同,switch的条件可以是字符串。并且不需要break,matlab只会执行当前case的语句,不会再向下执行。
循环语句
for循环
基本语法:
for index = values
statements
end
index指的是索引,可以理解为C++中的迭代器iterator,index有几种形式。
initVal
:endVal
-index
变量从initVal
至endVal
按1
递增,重复执行statements
直到index
大于endVal
。initVal
:step
:endVal
- 每次迭代时按值step
对index
进行递增,或在step
是负数时对index
进行递减。valArray
- 每次迭代时从数组valArray
的后续列创建列向量index
。
while循环
基本语法
while expression
statements
end
matlab画图基础
绘制线图
plot(X,Y)
创建 Y
中数据对 X
中对应值的二维线图。如果 X
和 Y
都是向量,则它们的长度必须相同。plot
函数绘制 Y
对 X
的图。
基本语法:plot(X,Y,LineSpec)
LineSpec是线型、标记和颜色的属性设置,比如说’-or’,是带圆形标记的红色实线,’–sb’,是带方形标记的蓝色虚线
x=linspace(-10,10);
y=sin(x);
plot(x,y,'-or')
hold on
z=cos(x);
plot(x,z,'--sb')
hold on是用来保留,上一次的绘图,然后再绘制这次的图形。
设置坐标轴标签
ax=gca%返回当前图窗的当前坐标区或图
xlabel(ax,"x轴")
ylabel(ax,"y轴")
xlim(ax,[0,10])
ylim(ax,[0,1])
gca的作用是返回当前图窗的当前坐标区或图,这通常是最后创建的图窗或用鼠标点击的最后一个图窗。
绘制多个图
gca是返回当前图窗的所有特性,如果有用多个图窗画图,则需要用f=figure()来创建图窗,并用figure(f),激活图窗,这样就可以设置多个图窗的特性。
x1=linspace(0,10);
x2=linspace(0,100);
y=sin(x1);
z=cos(x2);
f1=figure('Name','正弦');
plot(x1,y);
f2=figure('Name','余弦');
plot(x2,z);
ax1=gca;
figure(f1);
ax2=gca;
ylabel(ax1,"正弦")
ylabel(ax2,"余弦")