MATLAB台大郭彦甫老师课程笔记:第二课:结构化程式与自定义函数

1.matlab里的 不等于 表示:~=

>> rem(4,2)
% remainder 求42的余数
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:

第二课课后习题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

编程中遇到的问题:

  1. 首先,disp是可以用来连接输出字符串的,用中括号括起来即可。这个的前提就是把C转换成字符串。
  2. 其次,判断F的输入是否为空(直接回车),需要用 isempty 判断。
  3. 最重要的是:我的代码无论怎么改,无输入时都会有显示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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值