700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > matlab怎样优化for循环 MATLAB for循环优化三例

matlab怎样优化for循环 MATLAB for循环优化三例

时间:2019-04-28 19:24:57

相关推荐

matlab怎样优化for循环 MATLAB for循环优化三例

最近一周,对MATLAB有进行了新一轮的学习,对其矩阵化编程的思维有了更深入的了解。确实精妙!

例1:

将矩阵A= [1 2 3; 2 4 3; 3 4 5]中所有的数字3替换为33.

如果还停留在C语言的思维可能就是

>> for i=1:3

for j=1:3

if A(i,j)==3

A(i,j) = 33;

end

end

end

>> A

A =

1 2 33

2 4 33

33 4 5

而MATLAB语言则有更灵活的语法,

>> A(A==3) = 33

A =

1 2 33

2 4 33

33 4 5

这句的意思就是讲matlab中等于3的数复制为33;

>> A==3

ans =

0 0 1

0 0 1

1 0 0

当在MATLAB中输入A==3

>> A==3

ans =

0 0 1

0 0 1

1 0 0

得到的是一个逻辑数组,接下来的复制操作只对逻辑为真的部分进行。显然后一种写法代码更加简洁。

例2

将A= [1 2;2 3; 3 4; 4 5]每行视为坐标;将5阶零矩阵的这四个位置复制为1;

继续常规思维,也是最正常的思维就是每个位置赋值:

>> A= [1 2;2 3; 3 4; 4 5];

B = zeros(5);

for i=1:4

B(A(i,1),A(i,2)) = 1;

end

>> B

B =

0 1 0 0 0

0 0 1 0 0

0 0 0 1 0

0 0 0 0 1

0 0 0 0 0

这里可以使用sub2ind这个函数,从字面意思已经知道,是将下标转换为索引值,具体原理可以help sub2ind以及type sub2ind(查看源码)

所以可以直接写成

>> A= [1 2;2 3; 3 4; 4 5];

>> B = zeros(5);

>> B(sub2ind(size(B), A(:,1), A(:,2)))=1

B =

0 1 0 0 0

0 0 1 0 0

0 0 0 1 0

0 0 0 0 1

0 0 0 0 0

深刻体会到矩阵处理问题的简洁之美!

例3

统计矩阵A = [1 3 4; 5 3 2; 4 2 1]中3的个数

如果还停在初学C语言的思维,恐怕又是靠for解决问题

>> A = [1 3 4; 5 3 2; 4 2 1];

>> a = 0;

>> for i=1:3

for j=1:3

if A(i,j)==3

a = a+1;

end

end

end

>> a

a =

2

这使如果知道find函数和length函数,就会轻松不少:

>> length(find(A==3))

ans =

2

总结,通过以上三个例子,可以看到:

1、学习一门新的东西,一定要把握其精髓,不要固定步自封(比如一味使用for循环)、生搬硬套;

2、就我现在体会,学习matlab最重要的是学习它丰富的函数和灵活的语法,也就是说这门语言处理运算的思维。

3、作为一个技术人员,一定要偷懒,抠门。什么是偷懒,相同的功能,能用一行代码解决绝不用两行,什么是抠门,用最简洁的思维,最快的时间、最小的内存。

4、敢想敢做,敢想:为什么不能用一行代码解决;敢做,敢于通过学习实现自己的想法。

-12-13

matlab for循环的三种类型

学习了一半了,发现一个好网站,就是我想写这篇博客用的,网络真是个好东西!纪念下国庆啦 网址:/matlab/matlab_for_loop.html ---- ...

MATLAB 的循环语句

1.MATLABwhile循环语法 在MATLAB 中 while循环的语法如下: while end while 循环反 ...

MATLAB粒子群优化算法(PSO)

MATLAB粒子群优化算法(PSO) 作者:凯鲁嘎吉 - 博客园/kailugaji/ 一.介绍 粒子群优化算法(Particle Swarm Optim ...

MySQL性能优化(三):索引

原文:MySQL性能优化(三):索引 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:/vbi ...

MATLAB中多行注释的三种方法

MATLAB中多行注释的三种方法 A. %{ 若干语句 %} B. 多行注释: 选中要注释的若干语句, 编辑器菜单Text->Comment, 或者快捷键Ctrl+R 取消注释: 选中要取消注释 ...

MySQL优化三(InnoDB优化)

body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-top: 10 ...

App架构师实践指南六之性能优化三

App架构师实践指南六之性能优化三 08月02日 13:57:57nicolelili1阅读数:190 内存性能优化1.内存机制和原理 1.1 内存管理内存时一个基础又高深的话题,从 ...

MySQL派生表(derived)优化一例

1.什么是派生表derived 关键字:子查询–>在From后where前的子查询 mysql; +----+-------------+------------+------+-------- ...

用循环将三个DIV变成红色

url/curl.h" #pragmacomment(lib,"libcurl_imp.lib") boolHelloWorld::i ...

php设计模式笔记--总结篇

一.引入 设计模式的一般定义不再说,只大概说一下我理解的设计模式,我理解的设计模式的主要目的是利用面向对象(类.接口等)特点,让代码更加易于扩展,易于重用,易于维护.这三个特点也就要求我们不要将太多 ...

HDU 4740 模拟题意

九野的博客,转载请注明出处:/acmmmm/article/details/11711743 题意:驴和老虎在方格中跑,跑的方式:径直跑,若遇到边界或之前走过的 ...

7--OC中NSLog函数输出格式详解

OC中NSLog函数输出格式详解 • %@ 对象 • %d, %i 整数 • %u 无符整形 • %f 浮点/双字 • %x, %X 二进制整数 • %o 八进制整数 • %zu size_t • % ...

Python3.5:爬取网站上电影数据

首先我们导入几个pyhton3的库: from urllib import requestimport urllibfrom html.parser import HTMLParser 在Python ...

【Visual C++】游戏编程学习笔记之二:定时器的使用

本系列文章由@二货梦想家张程所写,转载请注明出处. 本文章链接:/terence1212/article/details/44195831 作者:ZeeCode ...

Generative Adversarial Nets[EBGAN]

0. 背景 Junbo Zhao等人提出的"基于能量的GAN"网络,其将判别器视为一个能量函数而不需要明显的概率解释,该函数可以是一个可训练的损失函数.能量函数是将靠近真实数据流形 ...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。