1.matlab里的 不等于 表示:~=
>> rem(4,2)
% remainder 求4对2的余数
ans =
0
2.if elseif else 语句:
a = 3;
if rem(a, 2) == 0
disp('a is even');
else
disp('a is odd');
end
3.switch case 语句:
input_num = 1;
switch input_num
case -1
disp('negative 1');
case 0
disp('zero');
case 1
disp('positive 1');
otherwise %% 还有otherwise!
disp('other value');
end
n = 1;
while prod(1:n) < 1e100
% 这句里的 prod(1:n) 表示 n!
% 1e100 表示1*10^100
% while( n! < 10^100)
n = n + 1;
end
第二课课后练习1:
答案如下:
s = 0;
i = 1;
while i <= 999
s = s + i;
i = i + 1;
end
disp(s);
% 或者用for
s = 0;
for i = 1:999
s = s + i;
end
disp(s);
结果均为 499500
第二课课后练习2:
“将A中的负值改为正值赋给B,其他不变。”
答案如下:
A = [0 -1 4; 9 -14 25; -34 49 64];
B = zeros(3,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)
4.break语句:
执行到一半需要暂停程序:CTRL+C
编写自己的函数:
function x = freebody(x0,v0,t)
% 自由落体运动的物体,走过的位移
x = x0 + v0.*t + 1/2*9.8*t.*t;
end
% 此时要注意文件名要和函数名相同。
function [a F] = acc(v2,v1,t2,t1,m)
a = (v2-v1)./(t2-t1);
F = m.*a;
end
% 输入的变量有5个,都放在参数列表里就好;
% 但是输出值要有2个,此时应该用中括号把它们括起来
% 调用的时候:
[Acc Force] = acc(20,10,5,4,1)
第二课课后练习3:
“温度单位转换。”
答案如下:
function m = F2C
while 1
F = input('Temperature in F:');
C = 5/9*(F-32);
if isempty(F)
break
end
disp(['==>Temperature in C =',num2str(C)])
end
end
编程中遇到的问题:
- 首先,disp是可以用来连接输出字符串的,用中括号括起来即可。这个的前提就是把C转换成字符串。
- 其次,判断F的输入是否为空(直接回车),需要用 isempty 判断。
- 最重要的是:我的代码无论怎么改,无输入时都会有显示ans=[],但是老师的示例里没有这个,最后发现是function里的问题,我写的是
function C = F2C()
这样就永远会有输出。想要没有输出,就只能改掉。
nargin:Number of Input Arguments 的缩写。在matlab中定义一个函数时,在函数体内部,nargin是用来判断输入变量个数的函数。如:
function [volume] = pillar(Do,Di,height)
if nargin == 2 % 意味:当输入变量数为2时,使height默认为1
height = 1;
end
volume = abs(Do.^2-Di.^2).*height*pi/4;
同理:nargout 是用于判断输出变量个数的函数。
函数句柄:
f=@(x) exp(-2*x); % 定义了关于 x 的变量 f ,使得 f=exp(-2*x)
x=0:0.1:2;
plot(x,f(x)); % 计算每个 x 对应的 f