MATLAB学习笔记(1)
前言
这个是学习台大郭彥甫教授的MATLAB课链接,说真的感觉就是简单易懂,在国内上课和看视频很少看到这么好的教程,很多细节都讲的很清楚,其实当我们在学习的时候,很多时候就是这样的一些细节不懂。同时,这个笔记也是很随便记录一下,没有很详细就当复习一下。
一、初级基本操作
...
可以用于换行,如果某一行代码太长,在末尾加上...
再回车即可,如果没有加回车会报错。ctrl+c
用于终止程序运行。close all
用于关闭所有绘画。clear all
清空所有变量。clc
清空命令窗口。- 如果是cell变量,A(1,1)结果是该位置的数据类型,A{1,1}是数据结果。
cat()
函数用于拼接矩阵和向量,cat(1,A,B)表示列拼接,cat(2,A,B)表示行拼接。reshape()
函数用于改变形状,reshape(A,r1,c1),r1是改变后的行,c1是改变后的列,但是改变前后必须保证r1 * c1=r2 * c2
- 文件的保存和读取
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\n',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图像;
作者:睿晞
身处这个阶段的时候,一定要好好珍惜,这是我们唯一能做的,求学,钻研,为人,处事,交友……无一不是如此。
劝君莫惜金缕衣,劝君惜取少年时。花开堪折直须折,莫待无花空折枝。
曾有一个业界大牛说过这样一段话,送给大家:
“华人在计算机视觉领域的研究水平越来越高,这是非常振奋人心的事。我们中国错过了工业革命,错过了电气革命,信息革命也只是跟随状态。但人工智能的革命,我们跟世界上的领先国家是并肩往前跑的。能身处这个时代浪潮之中,做一番伟大的事业,经常激动的夜不能寐。”
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.