其他分享
首页 > 其他分享> > Matlab学习——结构化程式与自定义函数

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

作者:互联网

一、结构化程式

0. 比较语句

<     小于
>     大于
<=    小于等于
>=    大于等于
==    等于
&&    与
~=    不等于
||    或

1. if elseif else

a = 5;
if rem(a,2)==0      rem()是一个求余数的函数
    disp("a is even");     disp()是一个打印输出的函数
elseif rem(a,2)==1
    disp("a is odd");
else
    disp("a is error");
end

输出:
>> Matlab01
a is odd

2. for

a=zeros(5);
for n=1:1:3    
    a(n)=2^n;
end
disp(a);


输出:
>> Matlab01
     2     0     0     0     0
     4     0     0     0     0
     8     0     0     0     0
     0     0     0     0     0
     0     0     0     0     0

3. switch case  otherwise

a=2;
switch a
    case 1
        disp("a = 1");
    case 2
        disp("a = 2");
    case 3
        disp("a = 3");
    otherwise
        disp("a is error");
end


输出:
>> Matlab01
a = 2

4. while

n=1;
while prod(1:n) < 1e100   prod(1:n)是指n!  1e100指的是1x10^100
    n = n + 1;
end
disp(n);

输出:
>> Matlab01
    70

5. break continue

continue和break与编程语言一样,contiune表示跳过
下面的步骤开始一次新的循环,break表示直接退出循环,
这两个命令不需要后面加end,直接嵌套在循环里面即可

6. 输出时间比较——提前给变量分配空间会提高运算速度

其中的%%号表示一个模块;MATLAB里面注释用%;tic 和 toc是MATLAB里面的时间函数,可以计时。

%%
tic
for ii = 1:1:2000
    for jj = 1:1:2000
        a(ii,jj) = ii + jj;
    end
end
toc

%%
tic
b=zeros(2000,2000);
for ii=1:1:size(b,1)
    for jj=1:1:size(b,2)
        b(ii,jj)=ii+jj;
    end
end
toc

输出:
>> Matlab01
时间已过 2.703345 秒。
时间已过 0.034226 秒。
>> Matlab01
时间已过 0.015400 秒。
时间已过 0.023685 秒。

二、官方函数

1.input函数

第一种:
x = input(prompt) 显示 prompt 中的文本并等待用户输入值后按 Enter 键。用户可以输入 pi/4 或 rand(3) 之类的表达式,并可以使用工作区中的变量。
如果用户不输入任何内容直接按下 Enter 键,则 input 会返回空矩阵。
如果用户在提示下输入无效的表达式,则 MATLAB 会显示相关的错误消息,然后重新显示提示。

第二种:
str = input(prompt,'s') 返回输入的文本,而不会将输入作为表达式来计算。
% input第一种用法:
% x=input(提示用户语句)

% 示例:
prompt='Please enter your number:';
x=input(prompt);
disp("x=");
disp(x);

% 输出:
>> Matlab01
Please enter your number:10
x=
    10


% input第二种用法:
% x=input(提示用户语句,“s”)

% 示例:
prompt='Please enter your number:';
x=input(prompt,'s');    % 注意这里只能是‘s’,不能是"s"
disp("x=");
disp(x);

% 输出:
>> Matlab01
Please enter your number:zhangpeng
x=
zhangpeng

2. function handle

%示例:

f=@(x)exp(-2*x); %前面的@x表示输入的变量是x ,后面的exp(-2*x)是f
x=0:0.1:2;
plot(x,f(x)); %f(x)表示exp(-2*x)

输出:

 

三、自定义函数

 

1. 基础自定义函数

在自定义函数中的乘除法使用 .* 或者 ./ ;这样可以同时输入多组计算数值。但也不是必要的,如果怕出错的话,尽量还是一组一组的计算。

% 示例函数:
% function是自定义函数的声明,x是函数的返回值,freebody是函数名,括号里面是参数

function x = freebody(x0,v0,t)  
x0=input('Please enter x0:');
v0=input('Please enter v0:');
t=input('Please enter t:');
x = x0 + v0 .* t + 1/2 .* 9.8 .* t^2;


% 输出:
>> freebody
Please enter x0:0
Please enter v0:0
Please enter t:10

ans =

  490.0000

写完函数后要保存才可以在文档中调用:点击运行“run”或者快捷键F5即可保存,此时的名字默认为自定义函数名

2. 多输入多输出自定义函数

注意:此时必须使用 .* 和 ./ 才可以实现多输入和多输出。

% 示例:
function [sum,mean]=work(a,b,c)
sum=a+b+c;
mean=(a+b+c)./3;

% 输出:
>> [a,b]=work(10,10,10)
a =
    30
b =
    10

3. 对于多输入和多输出的深入理解

nargin和nargout是检验输入输出数目的内置函数

% 示例:
% nargin和nargout是检验输入输出数目的内置函数

function [a,b]=work(aa,bb,cc)

if nargin==1
    disp('Just one input!');
    bb=1;
    cc=1;
elseif nargin==2
    disp('Just two input!');
    cc=1;
else
    disp('Have enough number!');
end
a=aa+bb+cc;
b=(aa+bb+cc)./3;
if nargout==1
    disp('Just one output!');
else
    disp('Have two output!');
end

%输出:
>> [aa,bb]=work(10,10,10)
Have enough number!
Have two output!
aa =
    30
bb =
    10

标签:disp,10,结构化,end,函数,自定义,Please,Matlab,input
来源: https://blog.csdn.net/qq_58011370/article/details/122329128