当前位置 : 主页 > 编程语言 > python >

Matlab从安装到入门再到初级

来源:互联网 收集:自由互联 发布时间:2022-06-18
例如将列表words中每个项目加上!打印出来: words = [hello, world, spam, eggs]; counter = 1; max_index = length(words); while counter = max_index word=words(counter); disp(word + !) counter = counter + 1; end %结果: hello!

例如将列表words中每个项目加上"!"打印出来:

words = ["hello", "world", "spam", "eggs"];

counter = 1;

max_index = length(words);

while counter <= max_index

word=words(counter);

disp(word + "!")

counter = counter + 1;

end

%结果:

hello!

world!

spam!

eggs!

4.2?for循环?

将上述while循环语句更改为for循环语句:

words = ["hello", "world", "spam", "eggs"];

for i=1:length(words)

word=words(i);

disp(word + "!")

end

4.3 拓展?

sum从0,1,...,n累加,直到sum>20时终止循环并打印sum

sum=0;

n=0;

while sum<=20

sum = sum+n;

n = n+1;

end

disp(sum)

或?

sum = 0;

n = 0;

for i=1:10

sum = sum+n;

n=n+1;

if sum>20

break;

end

end

disp(sum)

%结果:

21

5?parfor循环并行计算


5.1 简介

parfor循环是Matlab并行计算工具箱(Parallel Computing Toolboxl)用于并行计算单循环的工具,并行度与CPU核心数有关

软件界面左下角start开启,启动约十几秒

Matlab从安装到入门再到初级

出现这个图标就表示已经开启并行池

Matlab从安装到入门再到初级

开启前可以先对Parallel Preference预设pool数量,电脑多少核心这里就填多少,填多了也没用,下面是并行工具运行时间,默认30分钟

Matlab从安装到入门再到初级

可以多设置一些时长,不需要并行计算时可以点击关闭

Matlab从安装到入门再到初级

5.2 何时使用parfor

1、如果您有一个慢for循环,parfor循环可能很有用。如果您有以下情况,请考虑parfor:

  • 一些循环需要很长时间。在这种情况下,worker可以同时执行循环内的计算。确保循环次数超过工作进程数,否则,不会调用所有的核进行运算。

  • 简单计算的许多循环,如蒙特卡罗模拟或参数扫描。parfor将循环划分为多个组,以便每个worker执行循环总次数的一部分。

2、如果您有以下情况,parfor循环可能没有用处:

  • 运行矢量化的代码,例如x=0? ? ?for i=100? ? ?x=x+1 ?? ?end,执行并行计算时,work1负责第1、5、11次循环,work2执行2、6、12次循环,由于各works同时开始工作,work2开始计算时,第1次迭代也就是work1还未执行完第一个计算,work同样的基于x=0开始进行x=x+1,因此将导致结果x(1)=x(2)。

  • 执行所需时间较短的循环,由于需要时间将计算同步给其他workers,因此采用并行计算反而程序运行时间更多。

3、当循环中的迭代依赖于其他迭代的结果时,不能使用parfor循环。每个迭代必须独立于所有其他迭代。

举几个案例解释上述条件:

(1)普通单核计算

ticn = 20;

A = 500;

a = zeros(n);

for i = 1:n

a(i) = max(abs(eig(rand(A))));

endtoc

历时18. 765742秒.?

(2)并行四核计算

ticn = 200;

A = 500;

a = zeros(n);

for i = 1:n

a(i) = max(abs(eig(rand(A))));

endtoc

历时6. 358251秒

那么针对于仿真模拟或者是优化算法中的循环该怎么用,上文也说到了不能对循环中有矢量计算的采用并行方式

(1)单核计算

ticn = 20;

A = 500;

a = zeros(n);

for i = 1:n

b=0;

for j = 1:n

b=b+1;

a(i,j) = max(abs(eig(rand(A))))+1;

end

end

toc

历时39. 582394秒

(2)并行四核计算

可见内循环有一个矢量代码b=b+1,但对于外循环是不受影响的,因此可以将外循环改为parfor,反之如果外循环有矢量代码,内循环没有,就把内循环改为parfor,但不能在parfor循环内使用parfor循环。

ticn = 20;

A = 500;

a = zeros(n);

parfor i = 1:n

b=0;

for j = 1:n

b=b+1;

a(i,j) = max(abs(eig(rand(A))))+1;

end

end

toc

6?if条件语句


Matlab中的if需要加end结束语,if表达式后不需要加":",matlab打印函数disp比较常用,该函数打印字符时加单引号或者双引号都可以

(1)如果某个条件成立,可以用if语句

if 表达式

语句

end

(2)if语句里面部分应当缩进

%实例:

if 10>5

disp(‘正确’)

end

disp(‘程序结束’)

%运行结果:

正确

程序结束

(3)一般实际问题编程中会遇到嵌套if语句,例如:

num=10

if num>5

disp("大于5")

if num<20

disp("数值大于5,小于20")

end

end

%运行结果:

大于5

数值大于5,小于20

(4)当不满足该条件,则输出另一结果,例如?

x=4

if x==5

disp("Yes")

else

disp("No")

end

%运行结果:

上一篇:Python 分析电影《南方车站的聚会》
下一篇:没有了
网友评论