Matlab 手记

本文记录了Matlab的基础知识,包括数据类型、类型转换和自定义数据类型的使用。重点介绍了如何通过`help`获取函数信息,以及数据变量在*.mat文件中的存储和调用。还涉及数值型、布尔型、字符串、向量、矩阵和单元数组等数据类型的创建,以及不同类型之间的转换。此外,还分享了一些实用技巧,如动态扩展矩阵、字符串拼接、计算运行时长和清理内存等。
摘要由CSDN通过智能技术生成

最近有事用到了Matlab,顺便学习了一下,本着不浪费的精神,把其中觉得可能用得到的知识点记录一下。比较零散,有机会再整理。

基础知识

  1. 如果已知函数名,想知道函数用法和功能,直接 help funcName 即可,有详细的介绍及demo。
  2. 对于多个 *.m 文件共同工作的,只要放在同一个文件夹下,会自动关联,无需像java等其他语言那样显示调用。(系统类库也是会自动加载)
  3. 数据变量一般保存在 *.mat 文件中,可以方便后续调用或加载,通过这个方法,可以在探索开发阶段节省很多时间,尤其是计算时间较长的。

数据类型

  • 数值型:i = 2;
  • 布尔型:b = true;
  • 字符串:str = 'Hello World'; % 不要使用双引号
  • 向量类:vector = [ 2 3 4]; % vector(2) : 3
  • 矩阵类:matrix = [ 2 3 4 ; 5 6 7]; % matrix(2,2) : 6
  • 单元数组型: (cell型与矩阵的最大不同在于其每个元素的 类型可以不同)
    方式一:cell_obj = cell(2);
    cell_obj{1,1} = 10;
    cell_obj{2,2} = 'hello';
    方式二:cell_obj = {};
    cell_obj{2,2} = 'hello';

类型转换

  • 转换为字符串
    • 数值-》字符串:num2str(i);
  • 转化为cell
    • 数值-》Cell:num2cell(i);
    • 字符串-》cell:cellstr(str); % 这个命名比较特殊

自定义数据类型

classdef  className % 定义类型名称
    properties % 开始属性域
        % 属性名称可自己指定,类型不用指定
        % 属性默认值为 [],但会根据赋值的类型而自动变化
        prop_name_1
        prop_name_2
        ...
        prop_name_n
    end % 结束属性域

    methods % 开始方法定义域
        % 声明方法,其中参数列表的第一个参数代表对象本身,即其他语言中的 this 对象;
        % 参数变量名和类型可根据语境自行制定(包括self)
        % ret 代表要返回的对象
        function ret = funcName(self,...,argN)
            ... your code ...
            ... your code ...
            ret = result_vale;
        end
        function ret = funcName_1(self,...,argN)
            ... your code ...
            ... your code ...
            ret = result_vale;
        end
    end % 结束方法定义域
end % 结束类声明

其他知识点

  • 动态扩展矩阵:
    对于编码时无法确定矩阵或元组大小的情况,Matlab建议进行预分配内存,而不是在循环体中,不断地通过 obj(index) = obj_item 的方式不断扩展obj的大小。如:
polygonArr = repmat(polygonObj,[1,100]);    % 预分配内存多边形数组
polygonArr(1,index)=polygonTmp;  % 将多边形存入多边形数组
  • 字符串拼接: str_res = strcat(str1,str2,num2str(i),…,strn);
  • 计算程序运行时长:
start_time = clock; % 在程序最开始,记录程序开始时间
end_time = clock; % 在程序最后,记录程序结束时间
disp(['共耗时 ',num2str(etime(end_time,start_time)),' 秒']);
  • 清空命令行窗口: clc;
  • 清空内存缓存变量: clear;
  • 获取元素尺寸: size( v , 1 ); % 获取v的第一维的尺寸
  • 保存数据到本地:
% 将变量 var_1, ... , var_n 的当前值存储到 store_vars.mat文件中;
% 注意:所有变量名必须用单引号括住;
% 如果store_vars.mat 已存在并有相应变量值存在,则更新其值
% 内存 =》 文件系统
save('store_vars.mat','var_1',...,'var_n');

% 加载 store_vars.mat 文件(加载时需注意,当前工作空间如果存在同名变量,会被覆盖数据)
% 文件系统 =》 内存
load('store_vars.mat');
  • 保存数据到Excel
% 将 title_1 的内容,输出到 result.xls 文件的 Sheet_Name 工作表中
% 从 B2 单元格开始填充数据(如果不填第四个参数,则默认从A1 开始)
xlswrite('result.xls',title_1,'Sheet_Name','B2');
  • 打印内容到命令行窗口
% disp 将多个文本变量串联输出到命令行,并换行;
% 如果遇到非字符串类型的变量,需要将其转换为字符串;
disp(['打印第',num2str(i),'个字符串:',str]);

% 单个变量字符串时,无需加中括号
disp(mystr);
  • 读取图片并二值化
image_obj = imread(file_path);  % 读取文件,file_path 为图片路径

% im2bw - Convert image to binary image, based on threshold
% 基于阈值threshold_val转化图片为二值图(1为白色,0为黑色)
% threshold_val 取值 [0,1].
% 灰度值大于  255 * threshold_val 的像素点会被转化为 1,
% 其他的转化为0
BW_obj=im2bw(image_obj,threshold_val); % 图像二值化

% 翻转二值图像颜色( 黑白颠倒 )
BW_reverse = ~BW_obj;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值