学习笔记(1)---matlab中常见函数解析
一.fscanf函数
matlab中函数fscanf在文件读取方面的实例如下:
从文件中有格式地读数据 fscanf
语法1:[a,count]=fscanf(fid,format,size)
根据指定的格式从fid 文件按照格式format读出数据并按size的格式放入内存。
a :读出的数据放入内存的变量名
count :返回值。0:失败、n>0:成功,n是读出数据个数。
fid :文件号
size :a的数据的维度
N : 列向量
inf : 读出文件全部数据
[M,N] : 读出数据以M*N的格式放入变量名a内
format :读出数据的格式
format是字符形式,与C语言基本相同。字符形式中有“%”与字符集(d,i,o,u,x,e,f,g,s,c,…)搭配构成。
如: %s:单字符读
%c:读space字符
例:s=fscanf(fid,'%s') 返回一个字符。
a=fscanf(fid,']') 返回一个五位十进制整数。
size是一个[m n]的向量,m为行,n为列(注意,这里读取的顺序是按行读取,存储的时候是按列存储),若n取inf表示读到文件末尾。
fid为fopen打开文件的返回值,
format是格式化参数(像printf、scanf)。
举个小例子:
内容: 13,1,3.4
3,2.1,23
1,12,2
4,5.4,6
现在为了读取001中的数据存在一个数组里,可以用如下方法
fid=fopen('001.txt');
data=fscanf(fid,'%f,%f,%f',[3,inf]) ;%这里得用单引号
fclose(fid);
这时data中的数据如下:
13 3 1 4
1 2.1 12 5.4
3.4 23 2 6
二.isempty函数
matlab中 ~表示逻辑运算符“非”,也就是取反;~isempty(msg) 表示如果msg是空元素(空元素表示未赋值的元素,0并不是空元素),结果为0(false);否则结果为1(true)。
详细解析:
isempty(msg) 判断msg是否为空,如果为空,结果为1,否则为0.
~isempty(msg) 表示将 isempty(msg) 的结果取反,也就是说如果msg为空,结果为0,否则为1.
实例演示:
1、验证已经赋值的0矩阵
在matlab命令窗口输入如下代码,运行结果如下:

2、验证未赋值的变量

三.reshape函数
reshape把指定的矩阵改变形状,但是元素个数不变,
例如,行向量:
a = [1 2 3 4 5 6]
执行下面语句把它变成3行2列:
b = reshape(a,3,2)
执行结果:
b =
1 4
2 5
3 6
若a=[1 2 3
4 5 6
7 8 9]
使用reshpe后想得到b=[1 2 3 4 5 6 7 8 9]
只需要将a转置一下就可以了:
b=reshape(a',1,9)
三.clc,clear,clf等
clear是清变量,
clc只清屏,
clf清除图形窗口上的旧图形,
hold on是为了显示多幅图像时,防止新的窗口替代旧的窗口
四.Matlab实现批量处理图像的两种方法
基本上有两个方法:一个是将你的图像统一进行一次重命名如:1.jpg,2.jpg等,然后利用for循环依次进行处理即可,如下面的语句:假设你的图像共有20副:
str='D:\做差\好的图像\'; %我的图像放在D盘,做差文件夹下,好的图像文件夹下
for i=1:20
I=imread([str,num2str(i),'.bmp']); %依次读取每一幅图像
%在此处进行你的图像处理即可
end
方法二:
将图像统一方法一个文件夹下,不需要统一进行重命名了,利用uigetdir函数得到你所处理图像的路径,然后对此路径下的所有图像进行处理,举例如下:我只处理bmp文件
srcDir=uigetdir('Choose source directory.'); %获得选择的文件夹
cd(srcDir);
allnames=struct2cell(dir('*.bmp')); %只处理8位的bmp文件
[k,len]=size(allnames); %获得bmp文件的个数
for ii=1:len
%逐次取出文件
name=allnames{1,ii};
I=imread(name); %读取文件
%然后在此处添加你的图像处理程序即可
end
success…
四.shading interp;
shading 是用来处理色彩效果的,分以下三种:
no shading 一般的默认模式 即shading faceted
shading flat 在faceted的基础上去掉图上的网格线
shading interp 在flat的基础上进行色彩的插值处理,使色彩平滑过渡
在为使用shading interp时,生成的图像是黑漆漆的一团,在使用后,则变得很清晰明了。
网上查到了许多相关的解释:
shading interp 会区分每个线形区域的颜色,并且插入与其相近的颜色
shading interp 在网格片内采用颜色插值处理,得出表面图显得最光滑!
shading interp 对图形进行阴影处理!
五. ismember函数——检测集合中的元素
ismember函数用来检测元素是否在集合中。
1.tf=ismember(a,b)
返回与a大小相同的逻辑数组,如果a中的元素属于b,那么A中的相应位置返回1(true),否则返回0(false)。
例:a=[1 2 3 4 5];
b=[1 3 5];
c1=ismember(a,b); %判断a中的元素有没有在b中出现
c2=ismember(b,a); %判断b中的元素有没有在a中出现
那么 c1= 1 0 1 0 1
c2= 1 1 1
2. [tf, loc] = ismember(a,b)
tf返回一个和a同样大小的矩阵,a的元素在b中出现,tf上的相应位置元素值为1,没有出现则为0;loc也是返回一个和a同样大小的矩阵,其相应位置的值为a相应位置的元素在b中出现的最后标号,注意是最后的标号,若某元素在b中出现多次,则记录的是最后一次出现的标号,若该位置上的a的元素没有在b中出现,则返回0.
例: a=[1 2 3 4 5];
b=[1 3 5 8 3 5 4 7 9 4];
[tf1, loc1] = ismember(a,b);
[tf2, loc2] = ismember(b,a);
结果
tf1= 1 0 1 1 1
loc1=1 0 5 10 6
tf2=1 1 1 0 1 1 1 0 0 1
loc2=1 3 5 0 3 5 4 0 0 4
3.k=ismember(a,b,'rows')
a与b是列数相同的矩阵,如果a中的某一行与b中某一行元素相同,返回1,否则返回0。
注:k=ismember(a,b,'rows')中2012版本的Matlab是‘rows’,而以前版本的是‘row’
例 a=[1 2 3;
2 4 6];
b=[1 2 3;
2 4 7;
2 4 6;
1 3 6];
k1=ismember(a,b,'rows');
k2=ismember(b,a,'rows');
结果 k1 =1
1
k2=1
0
1
0
学习笔记(1)---matlab中常见函数解析的更多相关文章
- 学习笔记8—MATLAB中奇异值处理办法
一.Inf 和 NAN处理 lnf: 无穷大值,可以用islnf或者isfinite函数处理 NAN:不是一个数字,可以用isnan函数来处理 或者: 类似于这种处理 mn(find(mn<= ...
- 学习笔记3—matlab中load特殊用法
1.在matlab中 ,infro.mat中存有很多子矩阵(比如:mean_FA.mat, mean_e1.mat和 mean_e2.mat),调出某一个矩阵时,命令行为:load([path,'\' ...
- Sharepoint学习笔记—习题系列--70-573习题解析 --索引目录
Sharepoint学习笔记—习题系列--70-573习题解析 为便于查阅,这里整理并列出了我前面播客中的关于70-573习题解析系列的所有问题,有些内容可能会在以后更新, ...
- Laravel学习笔记之Session源码解析(上)
说明:本文主要通过学习Laravel的session源码学习Laravel是如何设计session的,将自己的学习心得分享出来,希望对别人有所帮助.Laravel在web middleware中定义了 ...
- CockroachDB学习笔记——[译]CockroachDB中的SQL:映射表中数据到键值存储
CockroachDB学习笔记--[译]CockroachDB中的SQL:映射表中数据到键值存储 原文标题:SQL in CockroachDB: Mapping Table Data to Key- ...
- Sharepoint学习笔记—习题系列--70-576习题解析 --索引目录
Sharepoint学习笔记—习题系列--70-576习题解析 为便于查阅,这里整理并列出了70-576习题解析系列的所有问题,有些内容可能会在以后更新. 需要事先申明的是: 1. ...
- 并发编程学习笔记(4)----jdk5中提供的原子类及Lock使用及原理
(1)jdk中原子类的使用: jdk5中提供了很多原子类,它会使变量的操作变成原子性的. 原子性:原子性指的是一个操作是不可中断的,即使是在多个线程一起操作的情况下,一个操作一旦开始,就不会被其他线程 ...
- [学习笔记] 在Eclipse中导入项目
参考前文:[学习笔记] 在Eclips 中导出项目 选择已经导出的文件: 导入之后,项目结构如下: 至此,完成.
- [学习笔记] 在Eclipse中导出可以直接运行的jar,依赖的jar中的类解压后放在运行jar中
前文: [学习笔记] 在Eclipse中导出可以直接运行的jar,依赖的jar打在jar包中 使用7z打开压缩包,查看所有依赖的jar都被解压以包名及class的方式存储在了运行jar中,此时jar的 ...
随机推荐
- python3-常用模块之openpyxl(1)
1.创建工作簿 from openpyxl import Workbook # 创建excel对象 wb = Workbook() # 获取第一个sheet = wb.active # 单元格写入内容 ...
- Linux-c给线程取名字
https://blog.csdn.net/jasonchen_gbd/article/details/51308638 #define wtm_set_thread_name(n) ({ \ ] = ...
- 如何在终端编译C++代码
C++语言从编写-->执行整个过程.一般来讲,开发一个C++程序需要经过以下几步1. 编写代码,2. 编译器进行编译,compile 生成.o的可执行的二进制目标文件3. 连接器进行连接. ...
- Redis高可用及集群
目录 Redis主从复制 环境准备 主从复制命令 Redis Sentinel 功能 Redis Sentinel配置 Redis集群 Redis主从复制 使用异步复制 一个服务器可以有多个从服务器 ...
- visual studio 2013 打开失败 ,报错:未能完成操作,不支持此接口
因为从新安装了.net 4.0版本,再打开visual studio 2013时,提示报错:未能完成此操作,不支持接口 解决办法:从microsoft官网下载了最新4.5版本进行安装后.即可成功打开.
- Delphi 设计模式:《HeadFirst设计模式》---行为模式之责任链模式
模式解说 责任链模式是一种对象的行为模式,它将处理客户端请求的那些对象联成一条链,并沿着这条链传递请求,直到有一个对象处理它为止. 通常使用在以下场合 1 有多个对象可以处理一个请求,哪个对象处理该请 ...
- cgroups实验
# yum install -y libcgroup libcgroup-tools创建控制组cgcreate -g cpu:/testcgcreate -g cpu:/test2 禁用quotacg ...
- 五、Hive-HBase接口表性能分析
设想: Hbase不支持join,不能做复杂统计类: Hive可以. Hive-hbase接口表岂不两全其美? 用户画像表有300个字段,每天都使用: 1.在业务系统里实时根据uid调取用户的画像信息 ...
- mybatis框架学习:
一.什么是框架 它是我们软件开发中的一套解决方案,不同的框架解决的是不同的问题 使用框架的好处: 框架封装了很多的细节,使开发者可以使用极简的方式实现功能 大大提高开发效率 二.三层框架 表现层: 用 ...
- Jupyter notebook使用matplotlib不出图解决办法
1.在jupyter notebook使用plot的时候没有显示图像2.在命令行知道需要使用ipython --pylab进入ipython环境才能做出图像,jupyter notebook该怎么设置 ...