MENU

Matlab—结构化程式与自定函数

November 21, 2018 • Read: 438 • matlab

创建并运行第一个 script


创建脚本之后,将下面代码复制到编辑器内,然后点击运行或者摁键盘 F5

for i = 1 : 10
    x = linspace(0,10,101);
    plot(x,sin(x + i));
    print(gcf,'-deps',strcat('plot',num2str(i),'.ps'));
end

运行后会看到一个运动状态的图,第一个 matlab 脚本就已经创建并且运行成功了,暂时先不用理解代码是什么意思,后面会慢慢讲到的

常用快捷键

  • %:单行注释
  • ctrl + r:多行注释
  • ctrl + t:取消多行注释
  • ctrl + i:智能缩进
  • %%:指定节
  • ctrl + enter:执行节
  • f5:运行程序

debug 调试程序

如果程序执行的结果不是我们想要的,但是又不知道哪里出错了,就可以给程序加断点分步调试,看错误在哪里

第一步,加断点

第二步,F5运行程序

第三步,清除断点并退出调试

条件语句

if else

格式:

if condition1
    statement1
elseif condition2
    statement2
else
    statement3
end

示例:

a = 3;
if rem(a,2) == 0 % a对2取余
    disp('a是偶数')
else
    disp('a是奇数')
end

switch

格式:

switch expression
    case value1
        statement1
    case value2
        statement2
    ...
    otherwise
        statement
end

示例:

input_num = 1;
switch input_num
    case -1
        disp('input_num的值是-1')
    case 0
        disp('input_num的值是0')
    case 1
        disp('input_num的值是1')
    otherwise
        disp('input_num的值不确定')
end

while

格式:

while expression
    statement
end

示例:

n = 1;
while prod(1 : n) < 1e100 % prod(1:n) = 1*2*3*...n
    n = n + 1;
end

for

格式:

for variable = start:increment:end
    commands
end

示例:

for n = 1 : 10
    a(n) = 2^n;
end

顺带提一句,for循环有时候在处理数据的时候会很消耗时间,下面举个例子

tic
for ii = 1 : 2000
    for jj = 1 : 2000
        A(ii,jj) = ii + jj;
    end
end
toc % 打印从tic到toc执行的时间 4.6s

但是如果提前做一些处理,比方说提前创建好矩阵,也许能节省不少时间

tic
A = zeros(2000,2000)
tic
for ii = 1 : 2000
    for jj = 1 : 2000
        A(ii,jj) = ii + jj;
    end
end
toc % 打印从tic到toc执行的时间 0.6s

break

break语句用来终止forwhile循环的执行。 在循环中,break语句之后出现的语句不执行。在嵌套循环中,break仅从它所在的循环中退出。

示例:

a = 10;
while (a < 20)
    fprint('value of a: %d\n',a);
    a = a + 1;
    if(a > 15)
        break;
    end
end

Script tips

当一个程序很复杂,需要运行很久,可是这时我不想程序继续运行下去了,就可以在命令行窗口摁下ctrl + c,此时程序就会停止了

Matlab function

格式:

第一个function

这里我自定一个自由落体的 function 作为例子

写完一个 function之后,直接保存,文件名一般情况下默认的是 function的名字,不用改动,然后使用这个 function

最后编辑于: November 25, 2018
Archives Tip
QR Code for this page
Tipping QR Code