MATLAB初步学习笔记

1、MATLAB简介

1.1简介

MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。 [1]

MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室),软件主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式。 [1]

MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。

1.2 软件操作界面

1、启动MATLAB界面:

2、进入主界面:

3、界面功能窗口简单介绍

4、编写代码并执行指定代码

5、执行代码,console命令行窗口查看结果:

2、MATLAB变量使用技巧

matlab格式命令 format

format long`长(long ) 命令格式显示小数点后16位。

默认情况下,MATLAB 四个小数位值显示数字。这就是所谓的 short format.

空格格式命令回合到小数点后两位数字。例如:

format bank
daily_wage = 177.45;
weekly_wage = daily_wage * 6

MATLAB将执行上面的语句,并返回以下结果:

weekly_wage =1064.70

MATLAB 显示大量使用指数表示法。

短格式e命令允许以指数的形式显示小数点后四位,加上指数。

例如:

format short e
4.678 * 4.9

MATLAB将执行上面的语句,并返回以下结果:

ans =2.2922e+01

format long e命令允许以指数的形式显示小数点后十六位,加上指数。例如:

format long e
x = pi

MATLAB将执行上面的语句,并返回以下结果:

x =3.141592653589793e+00

format rat 格式大鼠命令给出最接近的有理表达式,从计算所得。例如:

format rat
4.678 * 4.9

MATLAB将执行上面的语句,并返回以下结果:

ans =2063/90

长任务

长任务可以通过使用省略号(…)延伸到另一条线路。例如,

initial_velocity = 0;
acceleration = 9.8;
time = 20;
final_velocity = initial_velocity ...+ acceleration * time

MATLAB常用的运算符和特殊字符

MATLAB常用的运算符和特殊字符如下表所示:

运算符 目的
+ 加;加法运算符
- 减;减法运算符
***** 标量和矩阵乘法运算符
.* 数组乘法运算符
^ 标量和矩阵求幂运算符
.^ 数组求幂运算符
** 矩阵左除
/ 矩阵右除
*.* 阵列左除
./ 阵列右除
: 向量生成;子阵提取
( ) 下标运算;参数定义
[ ] 矩阵生成
. 点乘运算,常与其他运算符联合使用
续行标志;行连续运算符
, 分行符(该行结果不显示)
; 语句结束;分行符(该行结果显示)
% 注释标志
_ 引用符号和转置运算符
._ 非共轭转置运算符
= 赋值运算符

创建向量

向量是一维数组中的数字。 MATLAB允许创建两种类型的矢量:

  • 行向量
  • 列向量

创建行向量括在方括号中的元素的集合,用空格或逗号分隔的元素。

r = [7 8 9 10 11]

创建列向量通过内附组方括号中的元素,使用分号(;)分隔的元素。

c = [7;  8;  9;  10; 11]

矩阵用法

创建矩阵

普通创建方式如下:

矩阵是一个二维数字阵列。

在MATLAB中,创建一个矩阵每行输入空格或逗号分隔的元素序列,最后一排被划定一个分号。

例如,下面创建了一个3×3的矩阵:

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

创建矩阵的另一种方法是使用 oneszerosrand 等函数。

z = zeros(5,1)//创建5行,1列的矩阵,值全为0
o = ones(5,2)//创建5行,2列的矩阵,值全为1
r = rand(5,3)//创建5行,3列的矩阵,值为0到1的随机数

转置矩阵

r = rand(5,3)//创建5行,3列的矩阵,值为0到1的随机数
a = r'//矩阵转置,列变为行,行变为列

矩阵元素级操作

执行元素级乘法(而非矩阵乘法),请使用 .* 运算符:

a = [1 2 3;4 5 6;7 8 9]
p = a.*a结果:
a =1     2     34     5     67     8     9
p =1     4     916    25    3649    64    81

执行元素级求幂

a = [1 2 3;4 5 6;7 8 9]
a.^3
结果:
a =1     2     34     5     67     8     9
ans =1     8    2764   125   216343   512   729

3、MATLAB常用命令

MATLAB管理会话的命令

MATLAB提供管理会话的各种命令。如下表所示:

命令 目的/作用
clc 清除命令窗口。
clear 从内存中删除变量。
exist 检查存在的文件或变量。
global 声明变量为全局。
help 搜索帮助主题。
lookfor 搜索帮助关键字条目。
quit 停止MATLAB。
who 列出当前变量。
whos 列出当前变量(长显示)。

MATLAB的系统命令

使用MATLAB的时候有一些系统命令可以方便我们的操作,如在当前的工作区中可以使用系统命令保存为一个文件、加载文件、显示日期、列出目录中的文件和显示当前目录等。

下表列举了一些MATLAB常用的系统相关的命令:

命令 目的/作用
cd 改变当前目录。
date 显示当前日期。
delete 删除一个文件。
diary 日记文件记录开/关切换。
dir 列出当前目录中的所有文件。
load 负载工作区从一个文件中的变量。
path 显示搜索路径。
pwd 显示当前目录。
save 保存在一个文件中的工作区变量。
type 显示一个文件的内容。
what 列出所有MATLAB文件在当前目录中。
wklread 读取.wk1电子表格文件。

MATLAB输入和输出命令

MATLAB提供了以下输入和输出相关的命令:

命令 作用/目的
disp 显示一个数组或字符串的内容。
fscanf 阅读从文件格式的数据。
format 控制屏幕显示的格式。
fprintf 执行格式化写入到屏幕或文件。
input 显示提示并等待输入。
; 禁止显示网版印刷

fscanf和fprintf命令的行为像C scanf和printf函数。他们支持格式如下代码:

格式代码 目的/作用
%s 输出字符串
%d 输出整数
%f 输出浮点数
%e 显示科学计数法形式
%g %f 和%e 的结合,根据数据选择适当的显示方式

用于数字显示格式的函数有以下几种形式:

Format函数 最多可显示
format short 四位十进制数(默认)
format long 15位定点表示
format short e 五位浮点表示
format long e 15位浮点表示
format bank 两个十进制数字
format + 正,负或零
format rat 有理数近似
format compact 变量之间没有空行
format loose 变量之间有空行

MATLAB向量,矩阵和阵列命令

下表列出了MATLAB用于工作数组、矩阵和向量的各种命令:

命令 作用/目的
cat 连接数组
find 查找非零元素的索引
length 计算元素数量
linspace 创建间隔向量
logspace 创建对数间隔向量
max 返回最大元素
min 返回最小元素
prod 计算数组元素的连乘积
reshape 重新调整矩阵的行数、列数、维数
size 计算数组大小
sort 排序每个列
sum 每列相加
eye 创建一个单位矩阵
ones 生成全1矩阵
zeros 生成零矩阵
cross 计算矩阵交叉乘积
dot 计算矩阵点积
det 计算数组的行列式
inv 计算矩阵的逆
pinv 计算矩阵的伪逆
rank 计算矩阵的秩
rref 将矩阵化成行最简形
cell 创建单元数组
celldisp 显示单元数组
cellplot 显示单元数组的图形表示
num2cell 将数值阵列转化为异质阵列
deal 匹配输入和输出列表
iscell 判断是否为元胞类型

MATLAB绘图命令

MATLAB提供了大量的命令绘制图表。下表列出了一些常用的命令绘制:

命令 作用/目的
axis 人功选择坐标轴尺寸
fplot 智能绘图功能
grid 显示网格线
plot 生成XY图
print 打印或绘图到文件
title 把文字置于顶部
xlabel 将文本标签添加到x轴
ylabel 将文本标签添加到y轴
axes 创建轴对象
close 关闭当前的绘图
close all 关闭所有绘图
figure 打开一个新的图形窗口
gtext 通过鼠标在指定位置放注文
hold 保持当前图形
legend 鼠标放置图例
refresh 重新绘制当前图形窗口
set 指定对象的属性,如轴
subplot 在子窗口中创建图
text 在图上做标记
bar 创建条形图
loglog 创建双对数图
polar 创建极坐标图像
semilogx 创建半对数图(对数横坐标)
semilogy 创建半对数图(对数纵坐标)
stairs 创建阶梯图
stem 创建针状图

4、运算

逻辑运算

MATLAB逻辑运算都是针对元素的操作,运算结果是特殊的逻辑数组;在逻辑分析时,逻辑(真)用1表示,逻辑假用0表示,逻辑运算中所有的非零元素作为1处理。

注意:

使用MATLAB逻辑运算时的语法不要与C语言、Java等编程语言混淆。

MATLAB 有两种类型的逻辑运算符和函数:

  • Element-wise - 这些运算上的对应元素的逻辑阵列。
  • Short-circuit - 这些运算上的标量,逻辑表达式。

MATLAB元素明智的逻辑运算符操作元素元素逻辑阵列:符号&,|和〜逻辑数组运算符AND,OR,NOT。

MATLAB允许短路的短路逻辑运算符,逻辑运算:符号&&和| |是短路逻辑符AND和OR。

详细例子


在MATLAB中建立一个脚本文件,并输入下面的代码:

a = 5;
b = 20;if ( a && b )disp('Line 1 - Condition is true');endif ( a || b )disp('Line 2 - Condition is true');end% lets change the value of  a and b a = 0;b = 10;if ( a && b )disp('Line 3 - Condition is true');elsedisp('Line 3 - Condition is not true');endif (~(a && b))disp('Line 4 - Condition is true');end

运行该文件,产生如下结果:

Line 1 - Condition is true
Line 2 - Condition is true
Line 3 - Condition is not true
Line 4 - Condition is true

MATLAB逻辑运算功能


除了在上述的逻辑运算符,MATLAB 提供下面的命令或函数用于同样的目的:

函数 描述
and(A, B) 查找数组或标量输入的逻辑和;执行所有输入数组A,B等的逻辑AND,并返回包含设置为逻辑1(真)或逻辑0(假)的元素的数组。如果所有输入数组在同一个数组位置都包含一个非零元素,那么输出数组的一个元素将被设置为1;否则,该元素设置为0。
not(A) 查找数组或标量输入的逻辑NOT;执行输入数组A的逻辑NOT,并返回包含设置为逻辑1(真)或逻辑0(假)的元素的数组。如果输入数组在同一个数组位置包含一个零值元素,那么输出数组的一个元素将被设置为1;否则,该元素设置为0。
or(A, B) 查找数组或标量输入的逻辑或; 执行所有输入数组A,B等的逻辑或,并返回包含设置为逻辑1(真)或逻辑0(假)的元素的数组。如果任何输入数组在同一个数组位置包含一个非零元素,则输出数组的一个元素设置为1;否则,该元素设置为0。
xor(A, B) 逻辑异或; 对数组A和B的相应元素执行异或运算。如果A(i,j,…)或B(i,j)…,则所得到的元素C(i,j,…) j,…),但不是两者都是非零的。
all(A) 确定数组A的所有数组元素是否为非零或真。如果A是向量,则如果所有元素都为非零,则所有(A)返回逻辑1(真),如果一个或多个元素为零,则返回逻辑0(假)。如果A是非空矩阵,则所有(A)将A的列视为向量,返回逻辑1和0的行向量。如果A是空的0x0矩阵,则全部(A)返回逻辑1(真)。如果A是一个多维数组,则所有(A)都沿着第一个非指定维度行事,并返回一个逻辑值数组。 该尺寸的尺寸减小到1,而所有其他尺寸的尺寸保持不变。这个维度的大小减少到1,而其他所有维度的尺寸保持不变。
all(A, dim) 通过标量dim沿着维数A的维度进行测试。
any(A) 确定数组元素是否为非零;测试数组中不同维度的元素是否为非零数字,或是逻辑1(真)。 任何函数忽略NaN(不是数字)的条目。如果A是向量,任何(A)如果A的任何元素是非零数或逻辑1(真),则返回逻辑1(真),如果所有元素为零,则返回逻辑0(假)。如果A是非空矩阵,则任何(A)将A的列视为向量,返回逻辑1和0的行向量。如果A是一个空的0x0矩阵,任何(A)返回逻辑0(假)。如果A是一个多维数组,则任何(A)都沿着第一个非整数维进行操作,并返回一个逻辑值数组。该维度的尺寸减小到1,而所有其他维度的尺寸保持不变。
any(A,dim) 通过标量dim沿着维数A的维度进行测试。
false 逻辑0(假)
false(n) 是逻辑0的n×n矩阵
false(m, n) 是逻辑0的一个m×n矩阵。
false(m, n, p, …) 是由逻辑0的逐列逐列数组。
false(size(A)) 是与数组A大小相同的逻辑零数组。
false(…,‘like’,p) 是与逻辑阵列p相同的数据类型和稀疏性的逻辑零数组。
ind = find(X) 查找非零元素的索引和值;定位数组X的所有非零元素,并返回向量中这些元素的线性索引。 如果X是行向量,则返回的向量是行向量; 否则返回列向量。如果X不包含非零元素或是空数组,则返回一个空数组。
ind = find(X, k)ind = find(X, k, ‘first’) 最多返回与X的非零条目相对应的前k个索引。k必须是正整数,但它可以是任何数字数据类型。
ind = find(X, k, ‘last’) 最多返回与X的非零条目相对应的最后k个索引。
[row,col] = find(X, …) 返回矩阵X中非零条目的行和列索引。使用稀疏矩阵时,此语法特别有用。 如果X是N>2的N维数组,col包含列的线性索引。
[row,col,v] = find(X, …) 返回X中非零条目的列或行向量v,以及行和列索引。如果X是逻辑表达式,则v是逻辑数组。 输出v包含通过评估表达式X获得的逻辑数组的非零元素。
islogical(A) 确定输入是否为逻辑数组;如果A是逻辑数组,返回true,否则返回false。 如果A是从逻辑类派生的类的实例,它也返回true。
logical(A) 将数值转换为逻辑;返回一个可用于逻辑索引或逻辑测试的数组。
true 逻辑1(真)
true(n) 是一个n×n逻辑矩阵。
true(m, n) 是一个mxn逻辑矩阵。
true(m, n, p, …) 是由逻辑1的逐列逐列数组。
true(size(A)) 是与数组A大小相同的逻辑数组。
true(…,‘like’, p) 是与逻辑阵列p相同的数据类型和稀疏性的逻辑阵列。

算术运算

MATLAB的算术运算有两种不同类型:1)矩阵算术运算;2)阵列算术运算。

MATLAB矩阵算术运算与线性代数中的定义相同:执行数组操作,无论是在一维和多维数组元素的元素。

矩阵运算符和数组运营商是有区别的句点(.)符号。然而,由于加法和减法运算矩阵和阵列是相同的,操作者这两种情况下是相同的。

下表给出了运算符的简要说明:

操作符 描述
+ 加法或一元加号。A + B将A和B。 A和B必须具有相同的尺寸,除非一个人是一个标量。一个标量,可以被添加到任何大小的矩阵。
- 减法或一元减号。A - B,减去B从A和B必须具有相同的大小,除非是一个标量。可以从任意大小的矩阵中减去一个标量。
***** 矩阵乘法;是一个更精确的矩阵A和B的线性代数积,矩阵乘法对于非纯量A和B,列一个数必须等于B.标量可以乘以一个任意大小的矩阵的行数。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yvbDmAV1-1616230062391)(http://www.yiibai.com/uploads/allimg/131001/1643251036-0.jpg)]
.* 数组的乘法;A.*B是数组A和B的元素积,A和B必须具有相同的大小,除非A、B中有一个是标量。
/ 斜线或矩阵右除法;B/A与B * inv(A)大致相同。更确切地说: B/A = (A’B’)’
./ 矩阵右除法;矩阵A与矩阵B相应元素相除(A、B为同纬度的矩阵)
*.* 反斜杠或矩阵左除;如果A是一个方阵,AB是大致相同的INV(A)* B,除非它是以不同的方式计算。如果A是一个n*n的矩阵,B是一个n组成的列向量,或是由若干这样的列的矩阵,则X = AB 是方程 AX = B ,如果A严重缩小或者几乎为单数,则显示警告消息。
. 数组左除法;A. B是元素B(i,j)/A(i,j)的矩阵。A和B必须具有相同的大小,除非其中一个是标量。
^ 矩阵的幂。X^P是X到幂P,如果p是标量;如果p是一个整数,则通过重复平方计算功率。如果整数为负数,X首先反转。对P值的计算,涉及到特征值和特征向量,即如果[ D ] = V,EIG(x),那么X^P = V * D.^P / V。
.^ A.^B:A的每个元素的B次幂(A、B为同纬度的矩阵)
矩阵的转置;A’是复数矩阵A的线性代数转置,这是复共轭转置。
.' 数组的转置;A’是数组A的转置,对于复数矩阵,这不涉及共轭。

举例说明

下面的例子显示使用标量数据的算术运算符。创建一个脚本文件,用下面的代码:

a = 10;
b = 20;
c = a + b
d = a - b
e = a * b
f = a / b
g = a  b
x = 7;
y = 3;
z = x ^ y

运行该文件,产生结果如下:

c =30
d =-10
e =200
f =0.5000
g =2
z =343

MATLAB算术运算功能

除了上述列举的一些算术运算符,MATLAB 中还拥有以下的命令/功能:

函数 描述
uplus(a) 一元加号;增加量a
plus (a,b) 相加;返回 a + b
uminus(a) 一元减号;减少a
minus(a, b) 相减;返回 a - b
times(a, b) 数组相乘;返回 a.*b
mtimes(a, b) 矩阵相乘;返回 a* b
rdivide(a, b) 右阵划分;返回 a ./ b
ldivide(a, b) 左阵划分;返回 a. b
mrdivide(A, B) 求解线性方程组xA = B for x
mldivide(A, B) 求解线性方程组xA = B for x
power(a, b) 数组求幂;返回 a.^b
mpower(a, b) 矩阵求幂;返回 a ^ b
cumprod(A) 累积乘积;返回与包含累积乘积的数组A相同大小的数组。如果A是向量,则cumprod(A)返回一个包含A的元素的累积乘积的向量。如果A是矩阵,则cumprod(A)返回一个矩阵,其中包含A的每一列的累积乘积。如果A是一个多维数组,那么cumprod(A)将沿着第一个非正整数维。
cumprod(A, dim) 沿维 dim 返回返回累积乘积。
cumsum(A) 累加总和;返回包含累积和的数组A如果A是向量,则cumsum(A)返回一个包含A的元素的累积和的向量。如果A是矩阵,则cumsum(A)返回一个矩阵,其中包含A的每列的累积和。如果A是一个多维数组,那么cumsum(A)将沿着第一个非整数维度起作用。
cumsum(A, dim) 返回沿着dim的元素的累积和。
diff(X) 差分和近似导数;计算x相邻元素之间的差异。如果X是向量,则diff(X)返回相邻元素之间的差异的向量,比X短一个元素:[X(2)-X(1)X(3)-X(2)… X(N)-X(N-1)]如果X是一个矩阵,则diff(X)返回行差的矩阵:[X(2:m,…)-X(1:m-1,

MATLAB软件应用及语法学习基础相关推荐

  1. matlab能否算高中数学题,Matlab软件在高中数学学习中的应用

    强雨筱 [摘要]运用Matlab软件强大的计算及图像处理功能求解高中数学教材中2种典型例题.首先基于二分法,求解了一般非线性方程;其次基于随机模拟方法,估计了圆周率π的值.通过例题强化学生对Matla ...

  2. Markdown语法学习-基础语法

    前言 本人是一名普通二本的在读大一学生,准备在机械.编程.嵌入式开发等这一些方面深耕.现在也在准备经营属于自己的博客.因为是新手小白,没有什么基础,所以在前期会发一些比较基础的内容,在网上都是可以随便 ...

  3. MATLAB软件基础学习篇——003

    matlab常用函数 (转载) matlab常用函数 第一篇:Matlab软件函数 一.软件操作函数 1)命令窗口函数: clc:清空命令窗口,使用向上箭头翻看命令. open:打开文件,文本文件(* ...

  4. 统计软件 matlab,MATLAB 软件基础及统计应用教程

    原标题:MATLAB 软件基础及统计应用教程 本文由科学软件网整理发布 教师简介 谢中华,现于天津科技大学数学系任教,长期从事 MATLAB 相关课程的教学与培训.精通 MATLAB.SAS.R 语言 ...

  5. 水箱建模最小二乘法_lammps软件学习基础操作建模

    内部建模,即使用LAMMPS提供的命令建立模型.这种方法主要用于构建比较简单和标准的体系. 相关命令主要有4个: lattice:定义晶格类型: region:定义模拟盒子的大小: create_bo ...

  6. Day1-软件使用及python基础语法学习总结

    Day1-软件使用及python基础语法学习总结 1.常用快捷键 Pycharm软件常用快捷键 快捷键 功能 ctr + s 保存 ctr + c 复制 ctr + v 粘贴 ctr + x 剪切 c ...

  7. Python基础语法学习笔记

    Python基础语法学习笔记 想淘宝省钱看我简介,博客www.liangxin.name (一) 一.Print()函数 1.数字可以直接输出,无需加引号 只能理解数字,却读不懂文字.因为数字和数学运 ...

  8. 【C++学习之路】第二章——C++基础语法学习(1)之黑客攻击系统

    2 C++基础语法学习(1)之黑客攻击系统 遵循原则:从实战中学习知识 法律声明:本系统仅能攻击自己搭建的网站,作为学习使用,不会触犯法律 time:2020.01.20 author:姜海天 IDE ...

  9. Python基础语法学习6

    基础语法学习Day6 元组 1.元组就是不可变的列表 2.元组特有的一些方法和功能 (1)只有一个元素的元组:()中唯一的元素后需要添加逗号 (2)直接多个数据用逗号隔开表示的也是一个元组(元组的括号 ...

最新文章

  1. 【图灵奖大佬】Yoshua Bengio最新《深度学习》教程
  2. python如何读写文件-Python读写文件
  3. Linux环境变量的修改(永久,暂时)
  4. ORACLE 11g R2 RAC群集堆栈的关闭过程分析
  5. java类中,成员变量赋值第一个进行,其次是静态构造函数,再次是构造函数
  6. 配置linux定时任务没跑,Linux配置定时任务
  7. 解决cv2.error: OpenCV(xxx) C:\projects\opencv-python\opencv_contrib\modules\xfeatures2d\src\sift.cpp问题
  8. 【回放视频+PPT下载整理】Elasticsearch Meetup系列第二期
  9. php 除数 保留两位小数,c语言除法怎么保留小数
  10. java放大镜_Java写的屏幕放大镜
  11. SSM 实现学生成绩管理系统(完整代码)
  12. C++实现超简单的文件加密
  13. python中的row函数均方_均方位移python(Mean square displacement python)
  14. 学习React (3) - 如何用Jumbotron
  15. 插画怎么构图?小白快速上手教程
  16. lol服务器位置地图,LOL老玩家一定能看懂的地图 每一个地点都充满回忆
  17. 等保测评合规意味着什么,你有没有想太多了
  18. CentOS7设置共享目录
  19. 【Linux】软件包管理超详细笔记
  20. OpenFace编译遇到的各种问题

热门文章

  1. linux内部调用摄像头的第三方程序(命令):cheese
  2. 2020年x86服务器厂商TOP10最新榜单,精彩不?
  3. 树莓派替换开机树莓logo
  4. C#笔记(学生管理系统实战 - 用户登录)
  5. 办公自动化网络全配置
  6. UG创建图纸明细表失败的情况
  7. 微信网页授权登录且实现access_token分布式管理
  8. mysql的teqcher表结构_Mysql之库表操作(胖胖老师)
  9. 如何有效建设企业薪酬管理体系?
  10. 报错解决:[nodemon] app crashed - waiting for file changes before starting...