基本数据类型

变量的使用

变量的赋值

几条秘籍:

1.直接赋值,无需定义类型

2.字符串或字符用单引号

eg: msg = ‘Hello World’

查看工作区的变量

whos:查看工作区的变量

clear all:清除工作区所有的变量

clc : 清屏

数据类型转换

matlab的数据类型和c差不多,只不过对于int类型具有更多的内存大小选择空间。int/uint具有8,16,32,64位的选择,如unit8,范围为0到255,;又如int16是-32768~32767

其他类型:

1. single 单精度浮点,内存4字节

2. logical 布尔类型,等同于boolean

默认情况下,matlab将变量存为双精度,但是在图像处理中,一般要用到unit8,所以要强制转换。

>> a = 1;

>> b = uint8(a)

读取或着存储工作区的变量

有时候得到一些变量的值,想存储下来已被后续使用。可以用save和load

如:

>> a = 1;

>> b = uint8(a)

>> save (‘ha1.mat’,’a’,’b’)

%将工作区的a和b存储到ha1.mat文件中,当然可以不指定参数,就会将所有的变量存储。

>>clear all

>>a

此时,出现 ??? Undefined function or variable ‘a’.

如果加载

load (‘ha1.mat’)

a

则显示

>>a =

>> 1

矩阵的使用

常规矩阵

直接法:A = [1 2 3; 4 5 6; 7 8 9]

或是A = [1,2,3; 4,5,6; 7,8,9]

等间隔矩阵

v = [2:1,10]

v =

2 3 4 5 6 7 8 9 10

注意:两边都是闭的,如果是间隔为1,直接写成v=[2:10]

特殊矩阵

主要函数:

eye 单位矩阵

zeros 全为0矩阵

ones 全为1矩阵

rand 均为分布随机矩阵

randn 正态分布随机矩阵

eg: a = randn(5)

a =

0.8404 -0.6003 -2.1384 0.1240 2.9080

-0.8880 0.4900 -0.8396 1.4367 0.8252

0.1001 0.7394 1.3546 -1.9609 1.3790

-0.5445 1.7119 -1.0722 -0.1977 -1.0582

0.3035 -0.1941 0.9610 -1.2078 -0.4686

矩阵大小和维度

有时候你要看某个矩阵的大小,比如看第一维有多大,那么可以用size

size(A,dim) :dim为要查看的维数

看矩阵有几维用ndims(A)

A为3行5列的矩阵,那么

size(B,2) = 5;

size(B) = [3,5]

ndims(B) = 2

访问矩阵元素

注意:matlab矩阵是从1开始的!!!

显然提取对于二维数组,A(1,2)就是那个元素。但是如果要访问某一行或是某一列时,咋办呢?

利用“, :”或是“:,”就可以了。

A = [1 2 3; 4 5 6; 7 8 9];

k1 = A(1,:);

此时:k1 =

1 2 3

也就是说返回的是一个行向量,将A的第一行提取出来了。同理可以提取列。如:k2 = A(: , 3);

k2 =

3

6

9

类似的还有

1. A(m1:m2,n1,n2)

2. A(:) 将矩阵存为一个长的列向量

再如:inputSize = magic(3)

input =

8 1 6

3 5 7

4 9 2

>> input(1:5)

ans =

8 3 4 1 5

矩阵运算

我们都知道,矩阵的乘法是,比较麻烦的,得到矩阵的i行j列是第一个矩阵的i行的对应的数乘以第二个矩阵的j列对应的值,再求和。但是有时候我们就像让矩阵对应位置的数相乘,这时候是“.*“。

类似的还有:

1. .^ 每一个元素进行乘方

2. .\

3. ./

运算符 名称 说明

/ 右除 AB=C A=C/B

\ 左除 AB=C B=A\C

记忆方法:左除A\C inv(A)*C

右除 C/B B*inv(C)

常用矩阵函数

randperm, range, min/max/mean, size/length/numel/ndims, sum/prod, var/std, repmat, reshape,,bsxfun, cellfun,structfun,arrayfun等

值的注意的是,这些函数大部分有DIM参数,即所谓的“沿着第DIM维运算”,如:

c = [1 2; 3 4]; sum(c, 1)为[4, 6],此时有2列,而行被压扁成1行; 而sum(c, 2)为[3; 7],此时行数为2,而列数为1。可以这样想:“沿着”就是这一维的下标从1到最大值,其他维不变,进行函数运算。形象点就是说这一维被压扁了,只剩下一个了。另外matlab是按列填充数字的,比如c(3)是2,c(2) 是3,但第一维仍旧是行!!

细胞数组和结构体

细胞数组

一般来说我们返回一种数据类型,有时候我们想返回多个维度的值。细胞数组是一种特殊的数据类型。相当于python的list,内部可以是任意类型,通过下标访问

>> a ={‘a’,1,[1:4] }

a =

'a' [1] [1x4 double]

>> a{3}

ans =

1 2 3 4

细胞数组用“{}”来定义,通过“{}”来访问元素。

结构体

这个其实和c语言的结构体是差不多的。直接通过“.“来定义和访问。

可以这样认为,在细胞数组的基础上加上了属性,而细胞数组相当于结构体中的各属性的值的集合,而缺失了属性。

a.Name=’a’;

a.Age=1;

a.list=[1:4]

举个例子:

>> stu.book = {‘War’,’Peace’};

>> stu.name=’xiao’;

stu =

book: {'War' 'Peace'}

name: 'xiao'

几个函数:

fieldnames(student); %返回字段名(此处返回 ‘book’和’name’)

isfield(student,’age’);

isstruct(student);

struct2cell(student);

>> stuCell =struct2cell(stu)

stuCell =

{1x2 cell}

'xiao'

% cell中用’{ }’是得到内容

>> stuCell{1}

ans =

'War' 'Peace'

% cell中用’( )’是得到成员

>> stuCell(1)

ans =

{1x2 cell}

关系运算

其实没啥好说的,就是一点:“非”用“~”,例如:不等于“~=”,另外“!”不是matlab的阶乘。。

流程控制

常用的函数

isinf

isnan

isreal 判断是否为实矩阵

find

det 求行列式值

diag 抽取对角线元素

eig 求特征值和特征向量

inv 求逆矩阵

norm 求范数

rank 求矩阵秩

流程控制

简单一句话,一个流程中只有一个end!

如:

while/for …

,,,

end

if ..

..

elseif …

..

else

..

end

switch arg

case arg1

..

case arg2

otherwise

..

end

总结:elseif是连在一起写的,另外switch中不是用default,而是用otherwise,另外就是一种流程控制中只有一个end!

meshgrid的使用

在图像处理中,经常会用到meshgird函数,其主要是根据给定的横纵坐标生成网络。

[X,Y]= meshgrid(x,y)

典型用法:

例如二维高斯函数:

H(u,v)=e−[u2+v2]/2σ2

u = [-10:0.1:10];

v=[-10:0.1:10];

[U,V] = meshgrid(u,v);

H=exp(-(U.^2+V.^2)./2/3^2);

mesh(u,v,H);

注意:这里用的是.^和.*

函数编写

函数编写

一般来说,格式为:

function [outputs] = name(inputs)

如果是返回多个,就要用[]来括起来,如果值返回一个的话,就类似js的函数写法:

如:

返回多个值

function [imgOut,retCode] = imsmooth(imgIn,args)

返回一个值

function info = imfiinfo(filename,format)

无返回值

function imsmooth(imgIn.args)

matlab如何把纵轴压扁,Matlab基础知识相关推荐

  1. matlab与模态分析,电压稳定模态分析基础知识MATLAB实例

    %本人系电压稳定菜鸟,对电压稳定分析中基础知识左特征根向量右特征根向量,模态,参与因子的概念通过一%个具体的矩阵进行了MATLAB演算 %希望对和我一样的初学者有点直观的认识 A=[1 0 1;0 1 ...

  2. matlab光学远轴光的折射,摄影光学基础知识-光的折射定律

    摄影光学基础知识-光的折射定律 光的折射定律 当光传播到两种不同的介质(如水.玻璃)的分界面上时,在产生光的反射的同时,将有一部分光线射入到另一介质中,其传播方向随介质的密度大小而发生改变,这种光的偏 ...

  3. MATLAB教程(1) MATLAB 基础知识(1)

    第一部分:MATLAB显示桌面的基本布局 桌面基础知识- MATLAB & Simulink- MathWorks 中国 1.启动MATLAB后,桌面会显示默认布局,主要有以下三个部分: 当前 ...

  4. 【 MATLAB 】逆离散余弦变换(idct)的基础知识介绍

    基础知识介绍 逆离散余弦变换从离散余弦变换 (DCT) 系数中重建序列.idct 函数是 dct 函数的逆. The DCT has four standard variants. For a tra ...

  5. 【 MATLAB 】协方差 cov以及协方差矩阵基础知识

    Covariance 翻译为协方差,因此,MATLAB里面的函数cov也就是求协方差了.至于MATLAB语言里面的协方差函数cov的语法是什么样的以及怎么用的,我们稍后再说,这里首先介绍下协方差相关的 ...

  6. 《精通Matlab数字图像处理与识别》一6.2 傅立叶变换基础知识

    本节书摘来自异步社区<精通Matlab数字图像处理与识别>一书中的第6章,第6.2节,作者 张铮 , 倪红霞 , 苑春苗 , 杨立红,更多章节内容可以访问云栖社区"异步社区&qu ...

  7. MATLAB基础教程(2) 语言基础知识

    本教程主要讲到MATLAB语法.运算符.数据类型.数组索引及处理等等语言基础知识.大概可分四大部分: (1)输入命令 输入命令- MATLAB & Simulink- MathWorks 中国 ...

  8. 半小时入门MATLAB编程入门基础知识:

    https://learnxinyminutes.com/docs/zh-cn/matlab-cn/ 半小时入门MATLAB编程入门基础知识: % 以百分号作为注释符 %{ 多行注释 可以 这样 表示 ...

  9. matlab中if语句多个_MATLAB入门教程 | 003基础知识

    一.认识MATLAB 1. MATLAB概述 (1)在欧美各高等学校, Matlab成为线性代数.自动控制理论.数字信号处理.时间序列分析.动态系统仿真.图像处理等诸多课程的基本教学工具,成为本科生. ...

最新文章

  1. 高并发下接口幂等性技术方案
  2. SAP MM在ML81N事务代码界面报错- Customizing incorrectly maintained –之对策
  3. 数据库设计的酸(ACID)碱(BASE)原则
  4. MySQL执行外部sql脚本文件的命令
  5. 学习打卡-2018/08/09
  6. 用PHP获取土豆网视频FLV地址
  7. gravity与Layout_gravity的区别
  8. C++新特性探究(四):Raw String Literals
  9. 7-3 sdut-求两个整数之和(I)
  10. css3实现 依次出现三个点(一般用于提示加载中。。。 提交中。。。)
  11. 什么是大数据分析及挖掘技术
  12. redis数据结构-hash
  13. Tomcat 7 Connector 精读(2) 协议处理器 Http11Protocol(待续)
  14. 基于jsonwebtoken(JWT) 的web认证 (Node版实现)
  15. 程序员技术等级评定职称详细介绍
  16. 靶向肿瘤代谢,助力攻克癌症
  17. win10计算机用户怎么删除,Win10系统怎么管理的家庭成员账户? Win10删除账户的教程...
  18. 华东地区博友链接集合(陆续增加中)
  19. PADS-电阻、电容、电感PCB封装
  20. 基于C++的DES的EBC电子密码本加解密,CBC密码分组链接思想,以及相关流程图

热门文章

  1. Sleepy Cow Herding
  2. 八股文之sleep和wait方法的区别
  3. 5行Python代码爬取3000+ 上市公司的信息
  4. 搞懂AOP之三,偏序排序
  5. mastercam9.1如何控制进给输出小数点后的位数
  6. freeswitch 改用mysql_成长足迹-freeswitch默认sqlite数据库改为mysql
  7. 游戏主循环(Game Loop)的详细解析
  8. RH124---Linux基础测试题
  9. 开关背光接口实现framework层假休眠
  10. golang第三方库Excelize