最近学习了b站台大郭彦甫老师的MATLAB课程,就在这里记录一下自己的学习之旅吧,希望可以快点掌握,加油呀!
第二课:结构化程式与自定义函数
ex1:自定义一个函数实现华氏度向摄氏度的转换
要求:这个程序要一直执行,直到没有输入
提示:input、isempty、break、disp、num2str
代码:
function m=f2c
while 1 % 保证程序一直执行,后续要设置条件,当没有输入时程序停止
f=input('temperature in f:'); %获取输入
if isempty(f)==0 %当没有输入时跳出while,程序停止
c=5/9.*(f-32);
disp(['==>temperature in c=',num2str(c)])
else
break
end
end
end
遇到的问题:
1、首先题目要求如果有输入就要一直执行,所以采用while 1,但同时利用isempty()函数来判断当前输入是否为0。若满足有输入,则进行温度单位的转换,否则直接break跳出while结构
2、num2str()函数将数字转换为字符串,因为我们的想要展示的是‘temperature in c=’,是一个字符串形式,否则的话,可以直接disp(c)也可以,不用考虑数字到字符串的转换
3、在运行的时候,可以直接点击编辑器的运行,出现了一个提示,我们可以直接默认修改路径即可。
ex2:
要求:将矩阵A的正值赋值给矩阵B
代码:
A=[0 -1 4;9 -14 25;-34 49 64];
B=zeros(3) %构建一个全零矩阵
for i=1:3
for j=1:3
if (A(i,j)>0)
B(i,j)=A(i,j);
else
B(i,j)=-A(i,j);
end
end
end
disp(B)
其他知识点:
1、当循环一直在执行时,可以在命令窗口:Ctrl+C暂停程序
2、自定义函数时,文件名应该与函数名保持一致
3、一般定义函数的时候建议使用点乘和点除
4、nargin函数:在MATLAB中定义一个函数时,在函数体内部,nargin用来判断输入变量的个数
5、nargout函数用来判断函数的输出变量个数
function [volume]=pillar(Do,Di,height)
if nargin==2 % 当输入变量的个数为2时,height为1
height=1;
end
volume=abs(Do.^2-Di.^2).*height*pi/4;