find(==)函数matlab,MATLAB学习笔记(1 )find函数

最近,需要用MATLAB处理一批数据,数据的格式如下:

0818b9ca8b590ca3270a3433284dd417.png

如上图所示,在一个文本文件中存储着一个N行8列的矩阵,第一列的取值为-1,0,1.为了将所有含有这三个值的行分别提出出来。使用find函数应该是比较高效的。

find函数语法:

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) 或 3. ind = find(X, k, 'first')

返回第一个非零元素k的索引值。

k必须是一个正数,但是它可以是任何数字数值类型。

4. ind = find(X, k, 'last')

返回最后一个非零元素k的索引值。

5. [row,col] = find(X, ...)

返回矩阵X中非零元素的行和列的索引值。

这个语法对于处理稀疏矩阵尤其有用。

如果X是一个N(N>2)维矩阵,col包括列的线性索引。

例如,一个5*7*3的矩阵X,有一个非零元素X(4,2,3),find函数将返回row=4和col=16。也就是说,(第1页有7列)+(第2页有7列)+(第3页有2列)=16。

6. [row,col,v] = find(X, ...)

返回X中非零元素的一个列或行向量v,同时返回行和列的索引值。

如果X是一个逻辑表示,则v是一个逻辑矩阵。

输出向量v包含通过评估X表示得到的逻辑矩阵的非零元素。

根据如上的语法原理编写代码如下:

function result = example(dataPath)

%dataPath为data的路径

[pathstrssim, namessim, extssim] = fileparts(dataPath);

%读取数据

[Choice a b c d e f g ] =...

textread(dataPath,'%f%f%f%f%f%f%f%f%f%f%f');

tempMat = [Choice a b c d e f g];

%计算矩阵的总数

total = size(Choice,1);

tie = find(tempMat(:,1) == 0);

non_tie = total - size(tie,1);

[Lrow,Lcol V] = find(tempMat(:,1) == -1);

LeftMat1 =tempMat(Lrow,:);

[Rrow,Rcol V] = find(tempMat(:,1) == 1);

RrowMat1 =tempMat(Rrow,:);

result = [LeftMat1;RrowMat1];

end

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值