matlab笔记:matlab基础

matlab基础

说明

书名《MATLAB原理与应用(第五版)——工程问题求解与科学计算》
清华大学出版社
用的是matlab2012a。
这一篇是前两章合在一起

一些零散的命令

a=3按下回车,即显示a=3。如果是a=3;,则a的值不会显示,但仍被赋值。
whos可以确定当前工作区中局部变量或命令的清单。
clc是清除当前页面的文字。
clear是清除工作区中的所有局部变量。
help是查看帮助的命令。
size(r)用来查看r这个变量的大小,即几行几列。
plot(x,y),grid以x为横坐标以y为纵坐标画图,grid为增加网格背景。
plot(x,y),axis[0 10 1 10x范围为0到10,y范围为1到10。画图。
x=double(x)强制转换类型。
file打开file.m。
edit file编辑file.m。
type file列出file.m中的内容。
%balabala以%开头的为注释,注释一行。

工作空间

若是经常需要用到某些常量,可以将它们保存在一个M-文件中,并且在会话开始前运行该文件。例如:

g=9.8;
e=exp(1);

以上保存在const.m中,会话开始前运行该文件,会将里面的变量变成工作空间的一部分,直到将他们清除为止。

向量与矩阵

给变量x赋值,使其成为向量的方法如下:

x = [1 3 4 -1];  %用逗号来分隔里面的元素也可以
y = 1:0.5:10;    %第一个元素为1,按0.5递增,最后一位元素不大于4
y = 1:10;        %中间的递增的值为1时可以省略
z = [x,-y];      %前面是x中的元素,后面是y中元素的相反数
x = [];
x = 1:0;         %这两个都是生成空向量
x = [y,1,0];

若增量为负,则最后一个元素不小于第三个值。
r=linspace(0, 2, 10);向量r首项为0,末项为2,项数为10,是等差数列。
r=logspace(0, 2, 10);向量r首项为100,末项为102,项数为10,是等比数列。
以上向量均为行向量
若需要列向量,需要在行向量末尾加上单引号。单引号作用是转置该向量或矩阵。
以下命令是关于下标的:

r = rand(1,7);     %r行数为1,生成7个随机数,为行向量。
r(3);              %r中第3个元素(下标是从1开始的)
r(2:6);            %r中第2到第6个元素
r(1:2:7);          %r中第1357个元素。其中,最后的元素应不大于7。
r([1 7 2 6])       %r中第1726个元素。这四个下标用一个向量来表示了。
r([1 7 2]) = [];   %移除r中第172个元素。

给x赋值,若x=[1 2 3; 2 3 5]则x为2行3列的矩阵。
也可以像向量一样,用别的向量赋值,如下:

x = 0:30:180;
table = [x' sin(x*pi/180)'];

输出结果为7行2列的向量,第一列为角度,第二列为对应的sin值。
diary file该命令是将之后出现在命令窗口中所有内容附加到文件file中,将新信息添加到文件末尾。接下来可以使用任意文本编辑器来编辑。file是是文件全名(包括扩展名),若文件不存在则会重新创建该文件。
diary off用来终止该会话记录。

运算符、表达式和语句

1.234e-4为科学计数法。1.234*10^-4是运算而不是科学计数法,进行两次运算,所以更加耗时。
数字的相对精度由eps给出,eps是1.0与1.0之间的最小浮点数的距离,输入eps按下回车可查看该值。
realminrealmax可以返回计算机所能表示的数字的上下限(与正负无关,是绝对值)。
默认数值类型为double。
对标量来说,1/33\1一样,但对矩阵不同。
x=1+1:5的意思是,先执行加法,然后将x初始化为一个包含2、3、4、5的向量。
要转置1:5,应为[1:5]'
两个向量做算术运算,行数与列数必须相同(1*n和n*1是不一样的)。
a.*ba./ba.^b是对两个向量各个元素逐一对应进行运算。sum(a.*b)即为a与b的内积。
a+ba-b为a与b的加减法(没有“ . ”)。
逗号不禁止输出,分号禁止输出。分号与逗号不是语句的一部分,只是分隔符。

输出

有两种直接输出的方法

  • 不使用分号,在命令行中输入要输出的变量、赋值语句、表达式。
  • 使用disp语句。
disp(x);
disp('he said, "what?" ');
x=2;
disp(['The answer is ', num2str(x)]);
disp([x,x+1,x^2]');

num2str读作“number to string”。

format命令如下:
format short e数字用科学计数法表示,5位有效数字
format恢复原来的格式设置
help format查看帮助
其余有很多,懒得打了,看帮助就完事儿了。
不想让输出的矩阵乘上比例因子的话可以用format bank或者format short e

for循环(部分形式)

for a = 1:5, disp(a), end  %循环5次,分号用来分隔也可以
for a = 1:0, disp(a), end  %循环0
for index = j:k
  statements;
end
for index = j:m:k
  statements;
end

for完了之后得接个end算结束,没有大括号。
书中说for循环用向量来替代的话效率更高,如下:

%for循环
tic
n=1:100000;
s=sum(1./n.^2);
toc
%向量化
tic
n=1:100000;
s=sum(1./n.^2);
toc

我用的是2015a,按书上给的例子验证了一下,发现这两种方法时间从总体上看没什么差别,不是书上说的向量化比for循环快很多倍。可能是版本更新,for循环与向量化没什么差别了吧。

判断(if)

真值为1,非真为0。
不等号是~=,等号是==。其余的关系运算符是>、<、>=、<=。
if语句形式如下:

%单行if语句
if condition; statements; end
%单行if-else语句
if condition; statementA; else; statementB; end
%多行if-else语句
if condition
  statementsA;  %一个或多个语句
else
  statementsB;  %一个或多个语句
end
%elseif语句
if condition1
  statementsA;
elseif condition2
  statementsB;
...
else
  statementsN;
end

if可以嵌套。
逻辑运算符为:&(与)、|(或)、~(非)。
赋值表达式不能当做条件。
switch语句如下:

switch x
case x1
  statementsA;
case x2
  statementsB;
...
otherwise
  statementsN;
end

复数

i2=-1。

real(z)    %实部
imag(z)    %虚部
conj(z)    %共轭
abs(z)     %向量大小
angle(z)   %幅角

plot(z)相当于plot(real(z),imag(z))
对有复数的矩阵来说:

a'   %转置,且取共轭
a.'  %仅转置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值