Matlab基础

学习使用Matlab编程解决问题~

三个区域:

Command Window 用于输入命令和得到输出结果

Workspace 记录Command中用到的变量

Command History 记录Command输入历史

一、基础命令

1. 基础运算

  • 清空屏幕

    clc

  • 注释

    %

  • 加减乘除

    1 + 2
    1 - 2
    1 * 2
    1 / 2
    
  • 指数

    • 例如 5 2 5^2 52

      5^2

  • 对数

    • 例如: ln ⁡ 32 \ln32 ln32

      log(32)

    • lg ⁡ 32 \lg32 lg32

      log10(32)

    • log ⁡ 2 32 \log_232 log232

      log2(32)

    • log ⁡ 8 7 = log ⁡ e 7 log ⁡ e 8 \log_87 = \frac{\log_e7}{\log_e8} log87=loge8loge7

      log(7)/log(8)

  • 三角函数

    sin(x)

    cos(x)

    还有一些其他的三角函数,动手试一试。

  • 变量

    x = 10

    y = 20

    x + y

    不可以这样x + 1 = 2,没办法直接来解方程。在Matlab中=是赋值符号,不是等于。这个类似于C语言。

    可以这样:x = x + 1

    输出变量的值:fprintf('%g\n', x);或者disp(x);

  • 按方向键⬆️⬇️用来重复命令

    这个和Linux中一样。

  • 3 \sqrt3 3

    sqrt(3)

2. 向量运算

  • x ⃗ = ( 1 , 2 , 3 ) \vec x = (1,2,3) x =(1,2,3)

    x = [1,2,3]x = [1 2 3]

  • x ⃗ ∗ 2 \vec x*2 x 2

    这个是计算 x ⃗ ∗ 2 \vec x*2 x 2的值,但是 x ⃗ \vec x x 的值并没有改变,只是计算了这个表达式的结果。

    x = x * 2,这样才会改变 x ⃗ \vec x x 的值,这个和C语言一样~

  • 当然也可以做向量和向量的基本运算(加减乘除)等。

  • sum(x)

    这个命令是用来求和的,例如:

    v = [1 2 3];
    disp(sum(v));	% 输出 6
    

3. 矩阵运算

  • 矩阵
    KaTeX parse error: Expected & or \\ or \cr or \end at position 62: …& \mathbf{3} \\\̲ ̲\mathbf{4} & \m…

    KaTeX parse error: Expected & or \\ or \cr or \end at position 62: …& \mathbf{9} \\\̲ ̲\mathbf{10} & \…

    输入:A = [1 2 3;4 5 6]

    按上面的输入同样,矩阵B

    输入:B = [7,8,9;10,11,12]

    然后就可以做矩阵的运算咯,A*B,A+B,A-B,A/B等。

    注意这里矩阵运算需要遵循矩阵运算规则。

  • 另一种矩阵乘法

    在Matlab中输入A*B就是数学中的矩阵乘法

    还有一种是输入A.*B,这样就是矩阵每个位置( A i , j ∗ B i , j A_{i,j}*B_{i,j} Ai,jBi,j)对应相乘。

4. Script

  • New Script

    在脚本里写一堆命令。

    例如:计算 x + y x+y x+y

    x = 10;	% 加了;后,在command window里,就不会出现x=10的结果。
    y = 20;	% 也可以不加分号。
    x + y
    

    保存脚本扩展名为.m -> 然后在左面切换到刚才保存的文件夹 -> RUN

    写脚本可以实现输入互动,例如:

    x = input('Please input x:');
    y = input('Please input y:');
    
    x + y
    

    然后RUN,输入x,y,就会输出结果。

    • 例子:摄氏温度转华氏温度

      C = input('enter a temperature in Celesius:');
      F = (C * 1.8) + 32
      
      fprintf('Fahrenheit = %f\n', F);
      

二、语法

1. 选择

栗子1:

num = input('enter a number:');

if num > 0
	fprintf('正数\n');
elseif num == 0
	fprintf('0\n');
else
	fprintf('负数\n');
end

栗子2:

a = input('a = ');
b = input('b = ');

if a > b
	fprintf('%g\n', a);
else
	fprintf('%g\n', b);
end

栗子3:

% 1.
a = input('a = ');
b = input('b = ');
c = input('c = ');

if a + b <= c
	fprintf('NO\n');
elseif a + c <= b
	fprintf('NO\n');
elseif b + c <= a
	fprintf('NO\n');
else
	fprintf('YES\n');
end


% 2.
if (a + b > c) && (b + c > a) && (a + c > b)
	fprintf('YES\n');
else
	fprintf('NO\n');
end

2. 循环

2.1 while

栗子1:

t = 1;
while t <= 5
	disp(t);
	t = t + 1;
end

栗子2:

a = input('a = ');
b = input('b = ');
r = mod(a, b);

while r ~= 0
	a = b;
	b = r;
	r = mod(a, b);
end

disp(b);

2.2 for

栗子1:

% 输出 1 ~ 5
for i = 1 : 5
	disp(i);
end

% 输出 5 ~ -5
for i = 5 : -1 : -5	 % 这的-1表示步长,步长默认为 1,步长可以为小数。
	disp(i);
end

栗子2:

s = 0;
for i = 1 : 100
	s = s + i;
end

disp(s);

栗子3:计算

1 1 + 1 2 + 1 3 + … + 1 100 = ? \frac{1}{1}+\frac{1}{2}+\frac{1}{3}+…+\frac{1}{100} = ? 11+21+31++1001=?

s = 0;

for i = 1 : 100
	s = s + (1 / i);
end

disp(s);

栗子4:

1 1 − 1 2 + 1 3 − … − 1 100 = ? \frac{1}{1}-\frac{1}{2}+\frac{1}{3}-…-\frac{1}{100} =? 1121+311001=?

sum = 0;
flag = -1;

for i = 1 : 100
	sum = sum + (1 / i)*flag;
end

栗子5:for loop和向量

v = [1 2 3 4 5 6 7 8 9 100];

for i = v
	disp(i);
end

三、Function

3.1返回值

新建一个function。

栗子1:计算 1 + 2 + 3 + . . . + 100 = ? 1+2+3+...+100 = ? 1+2+3+...+100=?

function mysum1( )
	s = 0;
    for i = 1 : 100
        s = s + i;
    end
	disp(s);
end

运行:mysum1()

栗子2:计算 1 + 2 + 3 + … + n = ? 1+2+3+…+n = ? 1+2+3++n=?

function mysum2( n )
	s = 0;
    for i = 1 : n
        s = s + i;
    end
	disp(s);
end

运行:mysum2(100)

栗子3:计算 n + ( n + 1 ) + ( n + 2 ) + . . . + m = ? n+(n+1)+(n+2)+...+m = ? n+(n+1)+(n+2)+...+m=?

function mysum3( n, m )
	s = 0;
    for i = n : m
        s = s + i;
    end
	disp(s);
end

运行:mysum(4, 10)

上面这个例子,在command window调用时,我们需要把他的结果保存在一个变量中,如:s1 = mysum(4,10)。就会出错,这个就是没有返回值。

3.2 带返回值function

function ret = mysum3( n, m )
	s = 0;
    for i = n : m
        s = s + i;
    end
    ret = s;	% return
end

此时:s1 = mysum(4, 10)

这样就完成了一个具有返回值的function。


EOF,如有不足,请指正。

  • 14
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值