matlab find函数

x1=-2:2;
k1=-2:2;
x2=[1,-1,1];
k2=-1:1;
k=min([k1,k2]):max([k1,k2]);
f1=zeros(1,length(k));
f2=zeros(1,length(k));
f1(find((k>=min(k1))&(k<=max(k1))==1))=x1;
f2(find((k>=min(k2))&(k<=max(k2))==1))=x2;
f=f1+f2;
stem(k,f,'filled');
axis([min(min(k1),min(k2))-1,max(max(k1),max(k2))+1,min(f)-0.5,max(f)+0.5]);
其中f1(find((k>=min(k1))&(k<=max(k1))==1))=x1;是什么意思?

举个例子讲下find函数的用法:

例如A=[1 2 3;4 5 6;7 8 9]

    1 2 3

    4 5 6

    7 8 9

[m n]=find(A<4)

将m和n合并看[m n],为:

     1     1

     1     2

     1     3

即(1,1),(1,2),(1,3)

也就是说A矩阵中(1,1),(1,2),(1,3)处元素小于4.

find函数是找出矩阵A中满足一定条件的元素,返回的为这些元素的行列标号,分别将这些满足要求的元素的行标号存于m向量中,满足要求的元素的列标号存于向量n中,且m和n存储的元素标号是对应的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-05-29
功能:
找到非零元素的索引和值
语法:
1. ind = find(X)
2. ind = find(X, k)
3. ind = find(X, k, 'first')
4. ind = find(X, k, 'last')
5. [row,col] = find(X, ...)
6. [row,col,v] = find(X, ...)
说明:
1. ind = find(X)
找出矩阵X中的所有非零元素,并将这些元素的线性索引值(linear indices:按列)返回
到向量ind中。如果X是一个行向量,则ind是一个行向量;否则,ind是一个列向量。如果
X不含非零元素或是一个空矩阵,则ind是一个空矩阵。
2. ind = find(X, k) 或 ind = find(X, k, 'first') 返回第一个非零元素k的索引值。
k必须是一个正数,但是它可以是任何数字数值类型。
第2个回答  2010-05-16
建议你在命令窗口输入 doc find,出来的帮助文件介绍得很清楚。
[C,index]=find(a>=max(a)),对于这句指令,首先得清楚max(a),max(a)好像是求矩阵每一列的最大值,返回一个行向量,你给的a是单行矩阵,max(a)就返回其中的最大值。然后是find(),即寻找a中大于等于最大值的元素,C是满足条件的元素,index是元素在矩阵中的行列位置……不知道这样解答你清不清楚,总之很多指令的用法都可以在帮助文件里面找到的
第3个回答  2010-05-16
从你的需要查找的数据来看,语句u=find(a>=max(a))所得到的应该只是得到a向量中最大值所在原始向量中的序号。
对于行向量或列向量,u=find(a>=max(a))得到的都只是一个值,a(u)都代表的是这个值,我刚试了下没出现楼主出现的问题。
相似回答