matlab

fid = fopen('D:\\1MHz.txt');
dataW = fread(fid, 20000000, '*int16');
plot(dataW);
%axis([2.0038*10e5 2.004*10e5 -34000 34000]);
grid;

 

1.函数功能

  用来读写一个数据块。

2.一般调用形式

  fread(buffer,size,count,fp);

  fwrite(buffer,size,count,fp);

3.说明

  (1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。

  (2)size:要读写的字节数;

  (3)count:要进行读写多少个size字节的数据项;

  (4)fp:文件型指针。

 注意:1 完成次写操(fwrite())作后必须关闭流(fclose());

           2 完成一次读操作(fread())后,如果没有关闭流(fclose()),则指针(FILE * fp)自动向后移动前一次读写的长度,不关闭流继续下一次读操作则接着上次的输出继续输出;

           3 fprintf() : 按格式输入到流,其原型是int fprintf(FILE *stream, const char *format[, argument, ...]);其用法和printf()相同,不过不是写到控制台,而是写到流罢了。注意的是返回值为此次操作写入到文件的字节数。如int c = fprintf(fp, "%s %s %d %f", str1,str2, a, b) ;str1:10字节;str2: 10字节;a:2字节;b:8字节,c为33,因为写入时不同的数据间自动加入一个空格。

 

find(A>m,4)返回矩阵A中前四个数值大于m的元素所在位置

L = bwlabel(BW,n)
返回一个和BW大小相同的L矩阵,包含了标记了BW中每个连通区域的类别标签,这些标签的值为1、2、num(连通区域的个数)。n的值为4或8,表示是按4连通寻找区域,还是8连通寻找,默认为8。

 

函数bwlabel

MATLAB图像处理工具箱中的函数bwlabel是把四连通或八连通的区域连接起来,调用语法(syntax)为:
L = bwlabel(BW,n)

[L,num] = bwlabel(BW,n) 
其中BW为输入的二值图像(binary image);N可取值为4或8表示连接四连通或八连通区域;NUM为找到的连通区域数目;L为输出图像矩阵,其元素值为整数,背景被标记为0,第一个连通区域被标记为1,第二个连通区域被标记为2,依此类推.所以你不明白的1,2,3即为第1,2,3个连通区域的标记。

 附注:四连通或八连通是图像处理里的基本概念: 8连通,是说一个像素,如果和其他像素在上、下、左、右、左上角、左下角、右上角或右下角连接着,则认为他们是联通的;4连通是指,如果像素的位置在其他像素相邻的上、下、左或右,则认为他们是连接着的。

 

BW = [1     1     1     0     0     0     0     0

      1     1     1     0     1     1     0     0

      1     1     1     0     1     1     0     0

      1     1     1     0     0     0     1     0

      1     1     1     0     0     0     1     0

      1     1     1     0     0     0     1     0

      1     1     1     0     0     1     1     0

      1     1     1     0     0     0     0     0];

 

[L,num] = bwlabel(BW,4) 

 

L =

 

     1     1     1     0     0     0     0     0

     1     1     1     0     2     2     0     0

     1     1     1     0     2     2     0     0

     1     1     1     0     0     0     3     0

     1     1     1     0     0     0     3     0

     1     1     1     0     0     0     3     0

     1     1     1     0     0     3     3     0

     1     1     1     0     0     0     0     0

num=3

如果只想查看第二个连通区域的位置(标记为2),可以用find函数

[r,c] = find(L==2);  

rc = [r c]

rc =

2 5

3 5

2 6

3 6      注意此处的25 35 26 36 是按照列优先的顺序给出的。

 

find(A>5)返回矩阵A中大于5的元素所在位置

posted on 2014-04-02 18:31  MILUMI  阅读(337)  评论(0编辑  收藏  举报

导航