Matlab知识点整理
相信小伙伴百度matlab中不知道的内容,看起来眼花缭乱。为了适应新手水平,特此记录一些知识点方便学习复习。
文章目录
- Matlab知识点整理
-
-
- 判断语句的写法:
-
- if语句的写法
- switch语句的写法
- 循环语句的写法
-
- for语句的写法
- while语句的写法
- break,continue的运用
- 图形绘制:
-
- 常用函数的总结:
- 添加标注函数
- 常用函数总结:
-
- 输入输出
- 其他函数
- 数组中常用的函数
- 数学运算中的函数:
- 字符串中的函数
- 文件输入输出函数
- 注意事项:
-
判断语句的写法:
if语句的写法
if %条件语句1 %若满足条件语句1则执行 elseif %条件语句2 %若不满足条件语句1而且满足条件语句2则执行 elseif %条件语句3 %若不满足条件语句1,2且满足条件语句3则执行 else %以上条件都不满足则执行 end
以上语句中if和end必须匹配,elseif和else根据需求写,不是代码的必须部分。ifelse的数量根据题目需要和自己想法写。
对于一个if语句,elseif,else都属于if语句的一部分,故只写一个end。
a=70; if a>=90 %如果大等于90,则输出‘优秀’ disp('真优秀'); elseif a>=60 %如果大于等于60且小于90,则输出‘合格’ disp('合格'); else %如果小于60,则输出‘不合格!’ disp('不合格!'); end
switch语句的写法
switch语句只能对一个元素进行是否相等的判断
a %定义一个变量参与到switch switch a %告知switch语句你要进行比较的变量是a case %判断值1 %如果满足a==判断值1,则运行 case %判断值2 %如果满足a==判断值2,则运行 case %判断值3 %如果满足a==判断值3,则运行 otherwise %a不与上面任何一个判断值相等 end
otherwise不是代码的必须部分,写不写都可以。
a=80 switch a case 100 %可以将a与一个数值进行比较。如,词句判断a是否与100相等 disp('Wonderful!'); case {90,91,92,93,94,95,96,97,98,99} %也可以将a与一些数值进行比较。 %此处将a与90,91,92,93,94,95,96,97,98,99进行比较 %当于多个数值进行比较的时候,应用‘{’ ‘}’表示数据集 disp('Very good'); case {80,81,82,83,84,85,86,87,88,89} disp('Good'); case {70,71,72,73,74,75,76,77,78,79} disp('Okay') otherwise disp('APPLY YOURSELF!'); end
循环语句的写法
for语句与while语句最大的不同是:在不出现特殊判断停止循环的情况下(即没有continue语句和break语句时候),for语句的循环次数是已知的,while循环的循环次数是未知的。因为for循环的循环次数由一个规定好的计数器来进行限制,而while循环的循环次数是根据while语句后面的循环边界而定
for语句的写法
for %循环计数器 %循环语句 end
a = 1; for i=1:100 a=a*i; end
这个程序就计算了100!
while语句的写法
while %循环边界 %循环语句 end
a= 1;i=1; while a<=100 a=a+i^2; i=i+1; end;
这个循环就执行了计算从1开始计算,自然数的平方和第一个大于等于100的值。
对于while循环特别需要注意题目中问的问题和你计算的值之间的关系。
break,continue的运用
在一些特殊情况下需要提前结束循环,或者跳过某一步循环,就会分别用到break语句和continue语句。
break语句:
从A=[23,45,12,45,36,57,84,53,6,46,23,546,7568,59,5,23,56,246,3,75464,745734,63,2];中选出前 六个小于100的偶数;
n=0; %用n计数 for i=1:length(A) if mod(A(i),2)==0 %选出偶数 sprintf('%d ',A(i)); n=n+1; %记录已经新找到一个偶数 end if n==6 %如果找到的偶数数量等于6了,就跳出循环 break; end end
continue语句:
对于A=[23,54,12,76,34,85,23,54,78],B=[1,0,1,0,0,1,0,0,1],让将A的数据加入到C中,除非对应位置的B数组是0
for i=1:length(A) if B(i)==0 continue; end C(i)=A(i); end
图形绘制:
常用函数的总结:
plot():
subplot()
x=1:10; y=sin(x); subplot(2,2,1),plot(x,y,'m--'); subplot(2,2,2),plot(x,y,'*'); subplot(2,2,3),plot(x,y,'d'); subplot(2,2,4),plot(x,y,'v');
plot3(): 绘制三维图形
eg.绘制抛物曲面𝒛=𝒙𝟐+𝒚𝟐在−𝟏≤𝒙≤𝟏、−𝟏≤𝒚≤𝟏区间内的图像
X=-1:0.1:1; Y=X'; X1=X.^2; Y1=Y.^2; x=ones(3,1); x=ones(length(Y),1); y=ones(1,length(X)); X1=x*X1; Y1=Y1*y; Z=X1+Y1; subplot(1,2,1),mesh(X,Y,Z); subplot(1,2,2),surf(X,Y,Z);
axis 设置坐标轴形状 eg. axis square 立方体坐标轴
box box on封闭坐标轴 box off取消封闭坐标轴
grid grid on加网格线,grid off取消网格线
hold hold on保持之前的图形,hold off取消保持之前的图形
bar():、barh(): 柱状图
bar()竖直柱状图 barh()水平柱状图
bar(x,y,‘group’)/bar(x,y,‘stack’) group和stack是柱状图的类型
bar3()、bar3h(): 三维柱状图
area(): 条形图、面积图——-填充图
pie(),pie3() 饼状图、三维饼状图
hist(): 直方图
stem(),stem3(),stair(): 二维离散图形,三维离散图形,二维阶跃图形
添加标注函数
title(): 添加标题
legend(): 添加图例
ylabel(): 添加y轴标注
xlabel(): 添加x轴标注
x=1:0.01:10; y1=x.^2; y2=x; plot(x,y1,x,y2); title('y=x^2&y=x'); xlabel('x:1~10'); ylabel('y'); legend('y=x^2','y=x');
常用函数总结:
输入输出
输入语句:
input(’’): (单引号中必须有输入提示)eg.a=input(‘请输入a:’);
输出语句:
sprintf() 运用到低级I/O转换字符:
1.%c:输出单个字符
2.%d:输出有符号的十进制数
3.%f:以小数的格式输出
4.%s:输出字符串
eg. sex=‘male’; age=32; weight=80.2;
sprintf(‘I am %s, I am %d years old and i’m %f kg’,{sex,age,weight})
注意:要显示输出时,不要再sprintf()后面加分号
disp() disp括号中的内容必须是字符、字符串
eg. disp(‘Hello!’); a=30;disp(num2str(a));
其他函数
deg2rad(): 角度制转弧度制 deg2rad(30)=0.5236
rad2deg(): 弧度制转角度制 rad2deg(pi/3)=60.0000
补充:当想计算e的值时,可使用函数exp(1)代替;
abs() **取绝对值(或复数的模)**abs(-10)=10;
round(): 四舍五入取整 round(3.3)=3;round(3.5)=4;
fix(): 向0取整fix(3.3)=3;** fix(3.5)=3;fix(-3.3)=-3;fix(-3.5)=-3;
floor(): 向下取整 floor(3.9)=3;floor(-3.1)=-4;
ceil(): 向上取整 ceil(-3.9)=-3;ceil(3.1)=4;
A=[1,2,3,4,5];B=[4,5,6,7];C=union(A,B);D=intersect(A,B);
C:[1,2,3,4,5,6,7];D:[4,5];
rmfield(): 删除结构体中某个域名及其对应的值
student.name='bob'; student.sex='male'; student.num=123123; rmfield(student,'num');
student的num就被删除了
数组中常用的函数
diag(): 创建对角线方阵
a=diag([1,2,3])
a= 1 0 0
0 2 0
0 0 3
ones(): 创建全1矩阵
a=ones(5);创建5×5的全1方阵
a=ones(2,4);创建2×4的全1方阵
zeros创建全0矩阵
用法同ones()
eye创建单位矩阵(线代中的E)
linspace(): linspace(a,b,c) 把a到b等分成c份
eg. a=linspace(1,2,5); a:[1.0000 1.2500 1.5000 1.7500 2.0000];
矩阵的转置 其实不是函数 A=[1,2,3];B=A’;
B:[1;2;3]
reshape(): 改变矩阵的形状
A=[2,3,4,5;6,7,8,9;]
B=reshape(A,4,2);
B:[ 2 3; 4 5;6 7;8 9]
size(): 分别输出数组的行、列
length(): 输出数组最长的边
ind2sub(): 将全下标转变为双下标
sub2ind(): 将双下标转变全下标
A=[1,2,3;4,5,6;7,8,9];
[i,j]=ind2sub(size(A),5);
k=sub2ind(size(A),2,3);
i:2
j:2
k:8
数学运算中的函数:
polyval(): 根据多项式计算具体数值
poly2str(): 将多项式转换为字符串
polyder(): 求多项式导数
p=[4 3 2 1] a=polyval(p,4) b=poly2str(p,'x') c=polyder( p)
a:313
b:4 * x^3 + 3 * x^2 + 2 * x + 1
c:[ 12 6 2 ]
interp1()
interp1(原数据横坐标,原数据纵坐标,插入值的横坐标,插值类型)
eg.
x=0:10; y=sin(x)+0.2; xx=0:0.01:10; yy=interp1(x,y,xx,'liner') %线性插值
interp1不输入插值类型时候默认线性插值
三重积分:triplequad
低阶法积分求 f ( x ) = s i n ( x ) f(x)=sin(x) f(x)=sin(x)从0到pi的积分,且误差小于1e-6
f=@(x)sin(x) q=quad(f,0,pi,1e-6);
字符串中的函数
eval(): 运行字符串中的内容
str='1+4'; eval(str);
ans=5
文件输入输出函数
save(): 保存mat数据
load(): 载入mat数据
xlswrite(): 保存数据到excel表格中去
xlsread(): 从excel表格中读取数据
save('test'); %将所有变量保存到默认文件夹,命名为test.mat的文件中 save('test','a'); %将变量a保存到默认文件夹,命名为test.mat的文件中 load('test'); %从test.mat文件中读取数据 load('test','a'); %从test.mat文件中读取变量a xlswrite('123','a') %将变量a存入到123.xls文件中 xlsread('123',1) %从123.xls中的sheet1中读取数据
注意事项:
end指最后一个元素/行
当取范围时倒序取时,步幅必须写出 eg. 9:-1:1
数组用单下标计数时是竖着数的
subplot计数时是横着数的
cell数组的索引:双下标用{},单下标用()
c/c++开发分享Matlab内容整理嘿呀地址:https://blog.csdn.net/Chipmunkyle/article/details/110791793
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/596452.html