matlab如何把纵轴压扁,Matlab基础知识

基本数据类型

变量的使用

变量的赋值

几条秘籍:

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值