LOFTER-网易轻博

Matlab
计量本子* 2020-01-15

matlab全称:matrix&laboratory 即 矩阵实验室

对数:

  • log()等同于ln();

  • 如果底数不为e就这样写:log2(10):以2为底以10位真数

  • 但是,log2()是matlab里面特殊定义的函数,你如果写成log3()就无法计算

  • log10()也是可以的,相当于lg()

  • 对于除了以e、2、10为底的对数,就要用换底公式计算

换底公式

logm(N)=ln(N)/ln(m)

在matlab里面由于ln()默认表示为log(),故换底公式就成了:logm(N)=log(N)/log(m)

默认精确到第4位小数


快捷操作:

  • clc清空命令窗口,清空后之前变量的赋值还在,只是一个清屏的作用

  • 重复上一条命令:方向键↑


基础知识:

  • =在matlab里不是equal,而是assign,赋值的意思,把=右面的值保存在=左面的变量里面,左边的变量相当于一个放数字的盒子;要表示等于,要用==

  • 因此在matlab里面,=左边只能是一个量,=右边可以很长很长

  • matlab里面可以对同一个变量多次赋值,每次赋值都会替换掉前面一次的赋值

  • x = x + 1 叫做increment

  • vector向量: x = [1, 2, 3] 也可以写成 x = [1 2 3]

  • sqrt()根号

  • mod(a,b)余数

  • ~=    不等于

  • matlab里面比较大小的符号们,只能比较两个数之间的大小,不能连写几个小于等于

  • factor 约数

  • prime number 质数(只有1和自己,两个约数)

  • pi 圆周率

矩阵乘法

*     左列=右行,数学里的矩阵乘法

.*    同型矩阵,每个位置对应相乘


script脚本!

第1种:

x = 5

y = 7

x + y

运行结果:

x = 5

y = 7

ans = 35

第2种:

x = 5;

y = 7;

x + y

运行结果:

ans = 35

第3种:

x = 5;

y = 7

x + y

运行结果:

y = 7

ans = 35

第4种:

x = 5;

y = 7;

x + y;

运行结果:

(啥都没有)

一句话:

 

  • 运行结果里面凡是不带;的行都会显示,

  • 带了;的行会保存在内存里面,但不会显示

因此,如果y = 7 没显示,可以直接在命令窗口输入 y回车,就会显示y = 7


input互动!

第1种:

x = input('Please input x:')

运行结果:

Please input x: (输入一个数字)

x = (你输入的数字)

第2种:

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

运行结果:

Please input x:(输入一个数字)

(不会再显示x=)

这种情况不要小看,别人输入之后并不需要给她显示一个x=几这一步,因此要记得;

还有下面两种情况:

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

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

x + y

运行结果:

Please input x:比如2

Please input y:比如3

ans = 5

对比上下两种情况,下面这种显然不可取

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

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

x + y;

运行结果:

Please input x:比如2

Please input y:比如3

(没有答案那一步了,因为x+y后面有;)


个性化输出

fprintf('Fahrenheit = %f',F);

含义:在屏幕上行输出“Fahrenheit= %f”其中%的地方就是F代表的数字

注意:%后面有个f别丢了

fprintf('Fahrenheit = %f\n',F);

含义:显示完之后换行

对前面x+y运行结果优化显示:

x = input('Please enter x:');

y = input('Please enter y:');

fprintf('%f + %f = %f\n', x, y, x+y)

因为前面用的都是%f,所以结果是浮点数;如果把%f改成%g,显示的就是整数


逻辑与    &&    逻辑或    ||

if (a + b > c)&& (b + c > a)&&(a +c > b)

fprintf('Triangle!\n')

end


解一元二次方程

Unary quadratic equation

b^2-4ac,注意4ac要写成4*a*c


fprintf与disp

disp是display的缩写,它会自动加回车,不用加\n

查看变量的时候直接输入disp(a) 就会显示a的值


loop循环!

循环分为两种:

1.while

2.for

for循环还可以用来读取向量中的每个值

v = [1 9 8 6 ]

for i = v

    disp(i);

end

  • create script vs create function

script运行的两种方式:

1.双击左列目录栏里面的script

2.直接在command window里面输入具体某个script的名字,回车(不用输入后缀)


函数练习:

function sum(n)

function sum(m,n)

function result = sum (m,n)

functon result = count_factors(n)    计算n的约数共有几个

function result = is_prime(n)    测试n是不是质数


彩蛋:

command window:logo


画图

1.plot

plot(x,y)

plot(x,y1,'green',x,y2,'red')

plot(x,y1,'green*',x,y2,'red-o')

axis equal

2.bar

bar(y)

bar(x,y)

3. 3D graph

plot3(x,y,z) 图片窗口有一个旋转工具可以拖动旋转

注意,plot3画的是三维曲线,不能画三维曲面,曲面用surf(x,y,z)

*注意:matlab同一个scrip里面,下面的plot会替代上面的plot,如果要都保留的话,要在每个plot中间加一个“hole on;”

*显示网格:grid on

*加标题:title('')

*加轴名称:xlabel('')     ylabel('')

4.同一个坐标系画多个曲线

方法1:hold on

方法2:plot(x1,y1,'blue',x2,y2,'red')

5.同一个窗口建立多个坐标系画图

subplot(2,3,1)意思是:把窗口分为2行3列,画在第一个位置

x = -4:0.1:4;

y1 = sin(x);

y2 = sin(2.*x);

y3 = sin(3.*x);

y4 = sin(4.*x);

 

subplot(2,2,1);

plot(x,y1);

title('y=sin(x)')

 

subplot(2,2,2);

plot(x,y2);

title('y=sin(2x)')

 

subplot(2,2,3);

plot(x,y3);

title('y=sin(3x)')

 

subplot(2,2,4);

plot(x,y4);

title('y=sin(4x)')

如果要让一个图像占2个位置,则:

subplot(2,2,[3,4])

plot(x,y3)

6.曲面

surf(x,y,z)


移动

for i = 1 : 1000    每次移动0.1个单位,移动1000次,共移动了100个单位

    X = X + 0.1;

    Y = sin(X);

    set(h,'XData',X,'YData',Y);

    drawnow;

end

while true  永远循环下去

……

end

给定画图的x轴y轴范围:

axis([xmin xmax ymin ymax])

如果只想给定y轴的范围:

ylim([ymin ymax])

或 y=linspace(a,b,c)    其中a,b为区间,c为项数

推荐文章
评论(0)
联系我们|招贤纳士|移动客户端|风格模板|官方博客
网易公司版权所有 ©1997-2020 浙公网安备 33010802010186号浙ICP备16011220号-11增值电信业务经营许可证:浙B2-20160599
网络文化经营许可证: 浙网文[2019]3904-370号自营经营者信息工业和信息化部备案管理系统网站
分享到
转载我的主页