目录

一. 基本数论运算

例题1

例题2

例题3

例题4

二. 循环结构

2.1 for 结构

2.2 while结构

例题5

例题6

例题7

三. 转移结构

例题8

四. 开关结构与试探结构

4.1 开关结构

4.2 试探结构

五. 函数的编写

例题9


一. 基本数论运算

函数名 调用格式 解释
floor() n=floor(x) 下取整
ceil() n=ceil(x) 上取整
round() n=round(x) 四舍五入
fix() n=fix(x) 离0近方向取整
rat() [n,d]=rat(x) 最简有理数
rem() B=rem(A,C) 求模的余数
gcd() k=gcd(n,m) 最大公约数
lcm() k=lcm(n,m) 最小公倍数
factor() factor(n) 质因数分解
isprime() v1=isprime(v) 判断是否为质数

例题1

对下面的数据进行取整运算:

-0.2765,0.5772,1.4597,2.1091,1.191,-1.6187

解:

MATLAB代码如下:

clc;clear;
A=[-0.2765,0.5772,1.4597,2.1091,1.191,-1.6187];
A1=floor(A) %向-inf方向取整
A2=ceil(A)  %向+inf方向取整
A3=round(A) %取最近的整数
A4=fix(A)   %向0的方向取整

运行结果:
A1 =  -1     0     1     2     1    -2

A2 = 0     1     2     3     2    -1

A3 = 0     1     1     2     1    -2

A4 =0     0     1     2     1    -1

例题2

 Hilbert矩阵,试用rat()函数变换。

解:

MATLAB代码如下:

clc;clear;
A=hilb(3);
[n,d]=rat(A) %将元素变换成最小有理数,n,d分别为分子,分母矩阵

运行结果:

n =

1     1     1
     1     1     1
     1     1     1

d =

1     2     3
     2     3     4
     3     4     5

例题3

对1856120,1483720,求最大公约数,最小公倍数,质因子分解。

解:

MATLAB代码如下:

clc;clear;
format long
m=1856120; n=1483720;
[gcd(m,n),lcm(m,n)] %求m,n的最大公约数,最小公倍数
factor(lcm(m,n)) %对lcm(m,n)进行质因子分解

运行结果:

ans =

1.0e+09 *

0.000001960000000   1.405082840000000

ans =2     2     2     5     7     7   757   947

例题4

求1-100之间的质数

解:

MATLAB代码如下:

clc;clear;
A=1:1:100;
A1=isprime(A); %若向量A中某个整数为质数,则相应位置为1,其他为0
B=A(A1)

运行结果:

B =

2     3     5     7    11    13    17    19    23    29

31    37    41    43    47    53    59    61    67    71

73    79    83    89    97

二. 循环结构

2.1 for 结构

for i=V循环结构体
end

2.2 while结构

while (条件式)循环结构体
end

例题5

用循环求解如下:

解:

MATLAB代码如下:

clc;clear;%方法1
s1=0;
for i=1:100s1=s1+i;
end
s1%方法2
s2=0;
i=1;
while(i<=100)s2=s2+i;i=i+1;
end
s2%方法3
s3=sum(1:100)

运行结果:

s1 =5050

s2 = 5050

s3 = 5050

例题6

用循环求解,求最小的m

解:

clc;clear;s=0;
m=0;
while(s<=10000),m=m+1;s=s+m;
end
[s,m] %求出的m即为要求

例题7

求如下:

解:

clc;clear;tic,s1=0;
for i=1:100000,s1=s1+1/2^i+1/3^i;
end
toc
s1tic,i=1:100000;
s2=sum(1./2.^i+1./3.^i);
toc
s2%可比较两种方法的运行时间

运行结果:

历时 0.014148 秒。

s1 =1.500000000000000

历时 0.020827 秒。

s2 =1.500000000000000

三. 转移结构

if (条件1) %若条件1满足,则执行1语句组1  %也可以嵌套下级的if结构
elseif(条件2) %若满足条件2,则执行段落2语句组2
···   %可以设置多种转移条件
else  %上面的条件均不满足,执行下面段落语句组n+1
end

形成流程图:

例题8

用转移结构求解最大的m。

解:

MATLAB代码:

clc;clear;
s=0;
for i=1:10000s=s+i;if s>10000,break;end
end
i

运行结果:

i =141

四. 开关结构与试探结构

4.1 开关结构

switch 开关表达式
case 表达式1语句段1
case {表达式2,表达式3,···,表达式m}语句段2
···
otherwise语句段n
end

形成流程图:

此开关结构与C语言的区别:

  • 当开关表达式的值等于某表达式时,执行该语句后结束该结构,不用break;
  • otherwise语句不是C语言中的default;
  • 当需要在开关表达式满足若干个表达式之一时执行某一程序段,则用单元形式,即用大括号把这些表达式括起来,用逗号分隔;
  • 程序执行的结构和各个case的顺序无关;
  • case语句中条件不能重复,否则列在后面的条件将不能执行

4.2 试探结构

首先试探性执行语句1,若执行过程有错,将错误信息赋给保留的lasterr变量,并终止这段语句的执行,转而执行语句2。

try, 语句1,
catch 语句段2,
end

可以将不保险但快的算法放在语句1,保险的放在语句2;也可以在语句2处,说明语句1失效的原因。

五. 函数的编写

函数是MATLAB编程的主流方法,当然还可以采用M-script文件(M-脚本文件)。M-script适合于小规模运算。函数的基本结构如下:

function [返回变量列表]=函数名(输入变量列表)注释说明语句段,由”%“引导
输入,返回变量格式的检测
函数体语句

nargin,nargout分别表示输入和返回变量的实际个数,此为MATLAB的保留变量,只要进入该函数,MATLAB就会自动生成这两个变量。

varargin,varargout分别表示输入和输出变量列表,属于可变输入输出个数。

例题9

对于阶的Hilbert矩阵,元素满足:

尝试自己编写生成该矩阵的函数。

解:

若只给出一个输入参数,则会自动生成一个方阵。在编写函数时,需要给出合适的帮助信息,同时检测输入和返回变量的个数。

函数代码:

function A=myhilb(n,m)
if nargout>1,error('Too many output arguments.!!');
end
if nargin==1,m=n;
elseif nargin==0|nargin>2error('Wrong number of input arguments.');
end
A1=zeros(m,n);
for i=1:nfor j=1:mA1(i,j)=1/(i+j-1);end
end
if nargout==1,A=A1;
else if nargout==0,disp(A1);end
end

主运行代码:

clc;clear;
A1=myhilb(3,4)A2=myhilb(4)A=myhilb(3,4,5)

运行结果:

A1 =

1.000000000000000   0.500000000000000   0.333333333333333   0.250000000000000
   0.500000000000000   0.333333333333333   0.250000000000000   0.200000000000000
   0.333333333333333   0.250000000000000   0.200000000000000   0.166666666666667
                   0                   0                   0                   0

A2 =

1.000000000000000   0.500000000000000   0.333333333333333   0.250000000000000
   0.500000000000000   0.333333333333333   0.250000000000000   0.200000000000000
   0.333333333333333   0.250000000000000   0.200000000000000   0.166666666666667
   0.250000000000000   0.200000000000000   0.166666666666667   0.142857142857143

错误使用 myhilb
输入参数太多。

基于MATLAB的数论运算与编写函数(附完整代码)相关推荐

  1. 基于python nlp PyTorch智能对联生成系统 附完整代码 毕业设计

    软件标题:智能对联生成系统 b 系统概述 使用项目:智能对联生成系统 软件用途:通过网页端可以获取到根据已有上联只能生成的下联. 开发历史:本项目未曾有前置版本.但在服务器搭建,Tensorflow ...

  2. Python基于tk界面的万年历+阳历阴历(附完整代码)

    一.介绍tkinter并下载 tkinter tkinter(Tk interface)是Python的标准GUl库,支持跨平台的GUl程序开发.tkinter适合小型的GUl程序编写,也特别适合初学 ...

  3. 基于python图书馆管理系统和读者系统(附完整代码以及打包好的exe文件)

    摘要: 本文基于python的图书馆管理系统和读者系统,实现了登录.注册.忘记密码.书籍查询.借阅.归还.修改等功能,通过csv文件将数据存储在本地.注册时采用了邮箱验证码,模拟了现实场景.(全部源代 ...

  4. 基于opencv的图像碎片拼接复原系统 附完整代码可作为毕设

    C++ 开发环境:Microsoft VisualStudio 2017 Python 开发环境: PyCharm C++ 开源计算机视觉库: Opencv4.1.0 Python 开发语言版本: P ...

  5. 实战31:基于opencv的图像碎片拼接复原系统 附完整代码可作为毕设

    C++ 开发环境:Microsoft VisualStudio 2017 Python 开发环境: PyCharm C++ 开源计算机视觉库: Opencv4.1.0 Python 开发语言版本: P ...

  6. 基于MATLAB的二维与三维插值拟合运算(附完整代码)

    · 一. 一维插值 interp1函数在上个博客中(如下链接)已经更新了,此处再补充两个相关例题. 基于MATLAB的数据插值运算:Lagrange与Hermite算法(附完整代码)_唠嗑!的博客-C ...

  7. R语言使用caret包的confusionMatrix函数计算混淆矩阵、基于混淆矩阵的信息手动编写函数计算accuray、准确率指标

    R语言使用caret包的confusionMatrix函数计算混淆矩阵.基于混淆矩阵的信息手动编写函数计算accuray指标 目录

  8. R语言使用caret包的confusionMatrix函数计算混淆矩阵、基于混淆矩阵的信息手动编写函数计算Specificity、特异度指标

    R语言使用caret包的confusionMatrix函数计算混淆矩阵.基于混淆矩阵的信息手动编写函数计算Specificity指标 目录

  9. matlab编写fie滤波器,数字信号处理大作业mdash;mdash;基于matlab R2019a的男声变女声资料汇总与代码...

    @数字信号处理大作业--基于matlab R2019a的男声变女声资料汇总与代码 概述 参考了很多前人的资料,发现很多函数已经过时了,而且从我通过VIP下载的代码来看,代码的逻辑不是很清晰,废话也多, ...

最新文章

  1. WINCE屏蔽NK的串口输出信息
  2. Objective-C知识总结(5)
  3. java反射机制原理详解_java反射机制的详细讲解
  4. 阿里大牛精心整理了46张PPT,教你弄懂JVM、GC算法和性能调优!
  5. c#连接sqlserver
  6. mysqldump: Got errno 28 on write
  7. vue string转date_进阶高级前端,这9种Vue技术你掌握了吗?
  8. 【HTML】【简易电子相册】超链接
  9. python 安装talib包
  10. html扫雷游戏代码,HTML5扫雷
  11. DaHua工业相机开发中调试遇到的相机断开问题
  12. AIAI告诉我谁最美
  13. C语言程序软件电脑版,C语言宝典PC版-C语言宝典电脑版下载 v1.7.3--PC6电脑版
  14. BZOJ3521: [Poi2014]Salad Bar
  15. wi ndows自带截图工具,不想装截图工具?这里有 5 个 Windows 自带截图小技巧
  16. kafka之Consumer消费者基本概念
  17. ARPSpoofing、arp欺骗性攻击、arpspoof源码分析
  18. Hold time 个人理解
  19. LUBANSO硬件钱包冷知识,逻辑与查询
  20. 激光三角测量法在工业视觉检测上的应用

热门文章

  1. 计算机网络大学生职业生涯范文,计算机网络专业大学生职业生涯规划书
  2. NEO4J-链路预测算法03-优先链接算法(Preferential Attachment)应用场景简介
  3. POJ 2579 Blurred Vision G++
  4. Hadoop fs 常用命令
  5. Java(老白再次入门) - Java集合
  6. Python: SQLAlchemy 处理 PostgreSQL on conflict
  7. can和could的用法_中学生的难题can和could有什么关系,只需三分钟让你轻松记
  8. 网易视频云: 网易平台级视频服务存储技术
  9. 【聚类算法】什么是聚类
  10. LeetCode 526. 优美的排列