专业的网站建设公司哪家好,广东深圳属于什么地区,玉树市wap网站建设公司,wordpress 4.3.9 漏洞当我第一次用matlab语言编写一个工程项目时#xff0c;发现自己编写的脚本里循环特别多#xff0c;导致编程效率很低#xff0c;这让我特别苦恼。有一次导师让我阅读他编写的一个Matlab脚本#xff0c;并按照新要求对其进行更改。我发现脚本里多次用到find()函数#xff0…当我第一次用matlab语言编写一个工程项目时发现自己编写的脚本里循环特别多导致编程效率很低这让我特别苦恼。有一次导师让我阅读他编写的一个Matlab脚本并按照新要求对其进行更改。我发现脚本里多次用到find()函数猛然间豁然开朗原来有大部分循环可以用find()函数解决对我而言find()函数是我从Matlab小白开始进阶的标志仅以此文献给find()函数[1] find()函数基本功能find()函数的基本功能是返回向量或者矩阵中不为0的元素的位置索引。1 X [1 0 4 -3 0 0 0 8 6];2 ind find(X)34 ind 56 1 3 4 8 9其有多种用法比如返回前k的不为0的元素1 ind find(X,2)23 ind 45 1 3也可以写成1 ind find(X,2,first)23 ind 45 1 3返回后k个不为0的元素1 ind find(X,2,last)23 ind 45 8 9若X是一个矩阵索引该如何返回呢1 X [1 -3 0;0 0 8;4 0 6]23 X 45 1 -3 06 0 0 87 4 0 689 ind find(X)1011 ind 1213 114 315 416 817 9这是因为在Matlab在存储矩阵时是一列一列存储的我们可以做一下验证:1 X(4)23 ans 45 -3假如你需要按照行列的信息输出该怎么办呢 [r,c] find(X)r 13123c 11233如果你还需要输出具体的元素值1 [r,c,v] find(X)2 r 3 14 35 16 27 389 c 10 111 112 213 314 31516 v 17 118 419 -320 821 6[2] 进阶技巧(1)find()函数的功能是找到向量或者矩阵中不为0的元素那如果需要找到其中满足一定条件的元素比如等于4的元素该怎么办呢1 X [1 0 4 -3 0 0 0 8 6];2 ind find(X 4)34 ind 56 3在Matlab中有一个logical数据类型和C中的bool值相同。find()函数将logical值0也视为数值0logical值1视为数值1因此可以用上面的方法找到矩阵中满足一定条件的元素。(2)在程序中我们经常会以向量中是否包含某一元素为判断条件比如X中是否有等于9的元素这时也可以应用find()函数 if isempty(find(X 9))log 0elselog 1endlog 0这里需要补充说明下当输入中没有非0元素时findf()返回一个空数组。[3] 高级技巧在进阶技巧(2)中假如向量X的阶数很高比如1000万维如果我们用上面的方法运行速度会很慢。仔细分析这个语句我们其实并不希望找到X中等于9的全部元素我们只想找到其中是否有等于9的元素所以我们只需作如下更改1 isempty(find(X 9,1))我们做一个小实验1 X randi(100,1,10000000);2 tic3 for i 1:1004 isempty(find(X 9));5 end6 toc输出是1 Elapsed time is 1.954537 seconds.更改后1 X randi(100,1,10000000);2 tic3 for i 1:1004 isempty(find(X 9,1));5 end6 toc输出为1 Elapsed time is 0.757994 seconds.运行效率约是原来的2.5倍。