您能解释一下这行在Matlab中的作用吗

时间:2020-05-29 15:16:39

标签: matlab

我是Matlab的新手,只是被这一行代码困住了:

[r,c] = find(abs(fh) <= 2 );

当心:具有讽刺意味的是,我很容易理解任务的正确部分。

但是,左边部分(可能是变量的定义)...我不知道如何搜索,因为通过将方括号内的内容进行谷歌搜索,我得到的结果太笼统了。

我的假设是这行代码正在创建一个具有r行和c列的矩阵,但是在其余的代码中找不到r和c ....或者它可能是一个包含两个元素的简单数组。 ..但说实话,这对我来说意义不大。

你们能帮我吗?

2 个答案:

答案 0 :(得分:1)

只要您看到该语法,就意味着被调用的函数返回一个以上的输出参数(在这种情况下为两个)。

了解函数输出参数的最好方法是检查文档: https://www.mathworks.com/help/matlab/ref/find.html#d120e368337

[row,col] = find(___)返回每个行和列的下标 使用X中的任何输入参数的数组X中的非零元素 以前的语法。

输出参数是位置参数,因此r是行,c是行。

答案 1 :(得分:0)

看看Matlab find()文档。

  • 如果X是向量,则find返回一个与X方向相同的向量。

  • 如果X是多维数组,则find返回结果线性索引的列向量。

  • 如果X不包含非零元素或为空,则find返回一个空数组。

如果您致电

X = [18 3 1 11; 
     8 10 11 3; 
     9 14 6  1; 
     4 3 15 21 ]

[row,col] = find(X>0 & X<10,3)

您将获得:

row = 3×1

     2
     3
     4

col = 3×1

     1
     1
     1

哪个代表满足您定义条件的每个元素的索引(行号和列号)。由于它返回的值不止1个,因此您可以将输出分为两个不同的变量,这就是左侧所代表的含义。