MATLAB学习笔记(1)

前言

这个是学习台大郭彥甫教授的MATLAB课链接,说真的感觉就是简单易懂,在国内上课和看视频很少看到这么好的教程,很多细节都讲的很清楚,其实当我们在学习的时候,很多时候就是这样的一些细节不懂。同时,这个笔记也是很随便记录一下,没有很详细就当复习一下。

一、初级基本操作

  1. ...可以用于换行,如果某一行代码太长,在末尾加上...再回车即可,如果没有加回车会报错。
  2. ctrl+c用于终止程序运行。
  3. close all用于关闭所有绘画。
  4. clear all清空所有变量。
  5. clc清空命令窗口。
  6. 如果是cell变量,A(1,1)结果是该位置的数据类型,A{1,1}是数据结果。
  7. cat()函数用于拼接矩阵和向量,cat(1,A,B)表示列拼接,cat(2,A,B)表示行拼接。
  8. reshape()函数用于改变形状,reshape(A,r1,c1),r1是改变后的行,c1是改变后的列,但是改变前后必须保证r1 * c1=r2 * c2
  9. 文件的保存和读取
save mydata.mat -ascii;
load('mydata.mat','-ascii');

10.读取Excel文件

a = xlsread('path') %读取的时候会自动去除文字部分。
a = xlsread('path','B2:D4') %有选择的读取文件。
xlswrite('path',M,1,'E2:E4') %M表示变量,1代表写入sheet1,后面就是写入Excel的位置。
xlswrite('path',{Mean},1.'E1'); %把标头写入进去
这里在读写文件的时候要学会合理使用转置。

11.使用fopen()读写文件

1. 读取
%fid相当于每一行的一个指针,每一次就往下走,第一行,第二行,感觉有点想Python中的自动调用next()
fid = fopen('path','r/w');
i = 1;
while ~feof(fid):
    a(i) = fscanf(fid,'%5c',1); %读取档案,1表示读取的数量是读取这一行中的一列。
    b(i) = fscanf(fid,'%d',1);
    ...
    i = i + 1;
fclose(fid);

2. 写入
x = 0:pi/10:pi;
y = sin(x);
fid = fopen('sinx.txt','w');
for i = 1:11:
    fprintf(fid,'%5.3f','%8.4f
',x(i),y(i));
end
fclose(fid);

二、绘图

1.plot()
+ plot(x,y)
+ plot(y)默认x=[1,2....,n] n = length(y)
+ plot(x,y,'str')str表示Line的格式,可以去LineSpec查。

 plot(x,y,'db-',x,h,'gp-',....);

2.hold on/off用于保证绘图不会覆盖

hold on;
plot(x1,y1);
plot(x2,y2);
hold off;

3.Legend()图标,就是一副图中出现多条线,用于区分,一般分布在右上角

plot(x,y,'db-',x,h,'gp-',....);
Legend('sinx','cos(x)',....);

4.title()

title('XXX');
xlabel('t = 0 to 2/pi');
ylabel('xxx');

5.text()

str = 公式;
text(0.25,2.5,str,'Interpreter','Latex');

6.Figure Adjustment
对于MATLAB中绘图,应该有个印象,就是它是由每个物件组成的Figure object、Axes object、Line object

%gca axes
%gcf figure
get();
%范围变化
set(gca,'XLim','[0,2*pi]');
set(gca,'YLim','[-1.2,1.2]');

%外框字体大小
set(gca,'FontSize',25);

7.画很多图的时候

figure plot(x1,y1);
figure plot(x2,y2);

subplot(2,3,1);plot(x,y);axis normal
subplot(2,3,2);plot(x,y);axis square
....
subplot(2,3,6);plot(x,y);
分块的区域
|1|2|3|
-------
|4|5|6|

8.saveas()保存图片

saveas(gcf,'filename','format');
format:'png'/'tiff'/'pdf'

三、图像处理

图像存在的几种形式:

  • Binary二进制0,1
  • Grayscale灰阶0(black)-255(white),pixel像元
  • True color 即RGB

1.图片读取

I = imread('pout.tif');
imshow(I); %显示

imageinfo('pout.tif') %显示图片信息
imtool('pout.tif') %可显示像素点的数值

2.图像处理的相关函数


 K = imadd(k,j); %k图像和j图像相加
 
 imhist(I); %抓出graylevel 显示一个图像中每个像素点数值出现的频数。
 
 immultiply(I,1.5); %使得Matrix中的每个像素值变为1.5倍。差异跟明显。
 
 I2 = histeq(I); 均衡化,使得素值均匀的分布在各个数值。
 
 imwrite(I, 'pout.png');
 
 % graythresh()找出在灰阶图像中的阈值
 % im2bw()使其转化为二阶图像
 
 I = imread('rice.png');
 level = graythresh(I);
 bw = im2bw(I,level);
 
 % imopen()得到背景图像
 I = imread('rice.png');
 BG = imopen(I,strel('disk',15));
 imshow(BG);
 
 I2 = imsubtract(I,BG); %把I图像减去BG图像;
作者:睿晞
身处这个阶段的时候,一定要好好珍惜,这是我们唯一能做的,求学,钻研,为人,处事,交友……无一不是如此。
劝君莫惜金缕衣,劝君惜取少年时。花开堪折直须折,莫待无花空折枝。
曾有一个业界大牛说过这样一段话,送给大家:   “华人在计算机视觉领域的研究水平越来越高,这是非常振奋人心的事。我们中国错过了工业革命,错过了电气革命,信息革命也只是跟随状态。但人工智能的革命,我们跟世界上的领先国家是并肩往前跑的。能身处这个时代浪潮之中,做一番伟大的事业,经常激动的夜不能寐。”
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
原文地址:https://www.cnblogs.com/tsruixi/p/11462597.html