zoukankan      html  css  js  c++  java
  • 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图像;
    
    作者:睿晞
    身处这个阶段的时候,一定要好好珍惜,这是我们唯一能做的,求学,钻研,为人,处事,交友……无一不是如此。
    劝君莫惜金缕衣,劝君惜取少年时。花开堪折直须折,莫待无花空折枝。
    曾有一个业界大牛说过这样一段话,送给大家:   “华人在计算机视觉领域的研究水平越来越高,这是非常振奋人心的事。我们中国错过了工业革命,错过了电气革命,信息革命也只是跟随状态。但人工智能的革命,我们跟世界上的领先国家是并肩往前跑的。能身处这个时代浪潮之中,做一番伟大的事业,经常激动的夜不能寐。”
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    IO模型
    协程
    线程
    进程
    网络编程
    模块二
    面向对象(二)
    面向对象(一)
    优化异常报错
    python 模块
  • 原文地址:https://www.cnblogs.com/tsruixi/p/11462597.html
Copyright © 2011-2022 走看看