ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-01-06 12:00:43  阅读:215  来源: 互联网

标签:disp 10 结构化 end 函数 自定义 Please Matlab input


一、结构化程式

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有