MATLAB学习笔记(1 )find函数

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


如上图所示,在一个文本文件中存储着一个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 = [<span style="font-family: SimSun;">Choice a b c d e f g</span>];
 
 %计算矩阵的总数
 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 = <span style="font-family: SimSun;">[LeftMat1;RrowMat1];</span>

 
end



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值