matlab学习之数组学习

上周主要学习了matlab的数组用法,由于之前接触过matlab,所以这次学习主要以精读为主,我们知道matlab中数组的索引与c++的不同,matlab数组索引是从1开始的,而c++是从0开始的。并且还了解了数组结构,数组结构主要明白括号里的参数也就够了,例如:

A=ones(10,10);  %定义一个10*10全一矩阵
a=1:3;          %定义步长为一1到3的数组
b=1:3;          %同上
B=A(a,b);       %在矩阵A中提取1到3行和1到3列的子矩阵

a,b既可以为数组也可以为一个数,数组排序主要运用sort()函数,然后对于多维数组其实跟二维用法差不多,三维的就是行,列和页。然后就是单元数组,单元数组的每个元素不一定是数字,也可以是数组,还可以是字符串,比如:

A(1,1)={[1 2 3;4 5 6;7 8 9]};
A(1,2)={5};
A(2,1)={'matlab'};
A(2,2)={10:-1:1};

我们可以用celldisp(A)来完全显示所有单元的内容,也可以通过A{1,2},来读取第1行第二列单元数组的内容,而A(1,2)只是索引出所在处的单元。
学到这时,老师突然给我们一些excel表格数据(机器人通过红外摄像头对器件进行拍照,每张图片上各点的温度值),让我们通过这些数据先画出图片,然后找出绝缘子,我先用xlsread()函数将excel表格中数据读取到MATLAB中,并构造一个二维数组来存储这些数据,开始我们打算先将画出的图分为比较鲜明的几部分,通过图像的膨胀与腐蚀来去除明显不是绝缘子的部分,然后通过绝缘子的物理特性,如周长与面积的关系,我们可以从分成的几类中找到与我们特征值最接近的部分即为绝缘子,但是我们碰到了一个棘手的问题,我们找出来的那部分虽然大部分是绝缘子,但由于绝缘子的各点温度不同以及周围温度与绝缘子温度相差不大,所以我们找出的部分既有绝缘子缺失也有非绝缘子的问题,昨晚学长准备用k均值聚类算法来解决这问题,今天看了下效果,感觉还是有些小问题,另外我们也准备用bp神经网络相关算法来解决这问题,因为之前学长解决过类似的问题,所以种方法应该没问题,主要是要处理非常多的样本,暂时就进展到这,有待更新,尽请期待!

猜你喜欢

转载自blog.csdn.net/liu14lang/article/details/48631575
今日推荐