Matlab的英文全名即Matrix Laboratory(矩阵实验室)
rand/randn/randi
rand生成均匀分布的伪随机数,分布在(0~1)之间,rand(m,n)生成m行n列的均匀分布的伪随机数
【single 单精度浮点数 4个字节 double 双精度浮点数 8个字节,占内存长度不同single类型取值范围为1.5×10 -45 到zhi3.4×10 38 ,有7位小数,最大精度是小数点dao后约六位。 double类型取值范围为5×10 -324 到1.7×10 308 ,有15到16位小数,精度是小数点后14位。 】
rand(m,n,'double')生成指定精度的均匀分布的伪随机数,参数还可以是'single' rand(RandStream,m,n)利用指定的RandStream(随机种子)生成伪随机数
randn是均值为0方差为1的标准正态分布;(同rand)
rand(n)或randn(n)生成n*n的随机数矩阵。
rand(n,m)或randn(m,n)生成m*n的随机数矩阵。
randi 生成均匀分布的伪随机整数
randi(iMax)在开区间(0,iMax)生成均匀分布的伪随机整数
randi(iMax,m,n)在开区间(0,iMax)生成mXn型随机矩阵
r = randi([iMin,iMax],m,n)在开区间(iMin,iMax)生成mXn型随机矩阵
x=randperm(3)%对1~3的整数取一随机组合(3个数)
x(n)取数组中第n个数 x([m n])取数组中第m,n列 x(m:n)取数组中第m到第n列 x(start:length:end)
A(i,j)矩阵A中第i行第j列l A(i:j,m:n)表示由矩阵A 的第 i 到第j 行和第m到第n列交叉线上的元素组成的子矩阵
l 可利用冒号提取矩阵的整行或整列,提取行列中间以逗号分隔
删除指定的行或列
必存在一个“:”号,即无法同时删除行列
—————————————————————————————————————————
1、Integer:integer,整数 / 整型数,是编程语言的基本数据类型之一,用以指示变量的数据类型,有时也用于常量(变量、表达式)的强制数据类型转换。整型数据的长度及其取值范围并不固定,受编译环境影响。
2、Single:Single(单精度浮点型),以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。
1、Integer:integer存储为 16位(2 个字节)的数值形式。
2、Single:single存储为 IEEE 32 位(4 个字节)浮点数值的形式。
——————————————————————————————————————————Matlab中变量多为矩阵
矩阵和数组
1)数组使用方括号声明,数组元素使用空格或者逗号分隔开。这样的数组又叫做行矢量。
2)要创建矩阵,使用分号分隔的多行数据。
3)如果要转置矩阵,使用单引号。
4)创建初始值为0、1、均匀随机、正态分布随机的矩阵,它们的参数分别是行和列的个数。
eye(m,n)生成一个主对角线全为 1 的 m 行 n 列矩阵,m=n 时可简写为 eye(n),即 n 维单位矩阵
5)m,n均为三阶矩阵。两个某一维度相同的矩阵可以串联,逗号分隔为水平串联,分号分隔为垂直串联。下面[m,n]结果是3X6的矩阵,而[m;n]是6X3的矩阵。
6)矩阵与一个数运算,结果会应用到矩阵所有元素上。如果矩阵和矩阵运算,结果遵循矩阵计算法则。如果希望将两个矩阵对应元素进行计算,需要使用.运算符的语法。
索引运算
有时候可能需要对数组或矩阵中某些值进行计算,这时候可以利用索引运算进行。如果尝试访问矩阵中不存在的元素,会导致错误。不过如果是对不存在的元素赋值,Matlab会自动扩展矩阵,新创建的元素都为0.
如果需要访问多行或多列,使用冒号运算符。
冒号运算符还可以用于创建等距离矢量,语法是[起始:步长:结束],其中步长可以省略,默认是1。
矩阵计算
矩阵求和,默认情况下对于矩阵执行sum函数会得到各列的和。(以行展示)
如果希望得到各行的和,需要在sum函数上指定第二个参数。(以列展示)
如果要获取对角线的和,可以使用diag函数先得到对角线矢量。
如果要得到反对角线,Matlab没有提供直接方法。不过我们可以利用fliplr函数先对矩阵进行左右翻转,然后再求对角线。
有一种特殊的矩阵叫做幻方,这种矩阵各行、各列、以及两条对角线的和都是相同的。Matlab内置了函数magic,可以生成指定维度的幻方。
m = magic(3)%三阶幻方
常用关于矩阵的数学函数
det(A) % 行列式
inv(A) % 求逆
eig(A) % 特征值
rank(A) % 求矩阵的秩
查看矩阵的大小:size
图像-矩阵
基本图像类型-图像就是矩阵,矩阵就是图像
我们常见的图象类型主要二值图像、灰度图像和RGB图像。
1、二值图像
二值图像是仅用0和1来表示一幅图像,0代表黑,1代表白。
A=ones(1280,760);imshow(A)
A=zeros(1280,760);imshow(A)
A=zeros(1000);
A(200:800,200:800)=1;
imshow(A)
2、灰度图像
灰度图像是用0到255之间的256个整数来表示一幅的图像,0代表黑,255代表白,将黑与白均匀的细分成256份,每一个值代表一种色。
A=255*ones(1280,760);imshow(A)
A=zeros(1280,760);imshow(A)
A=imread('rice.png');
imshow(A)
3、RGB图象
RGB图像是分别用红、绿、蓝三个亮度值为一组,代表每个像素的颜色,是一个有三个矩阵合在一起的块矩阵,块矩阵的每一页是一个灰度图。
f=imread('tu1.bmp');
subplot(2,3,2), imshow(f)
subplot(2,3,4), imshow(f(:,:,1))
subplot(2,3,5), imshow(f(:,:,2))
subplot(2,3,6),imshow(f(:,:,3))
--基本命令、
读取和显示图像:
I=imread(‘D:\Applications\MATLAB7\work\1.jpg’)
imshow(I)
clear; close all
I=imread('rice.png');
imshow(I)
RGB图像转换为灰度图像:
I=rgb2gray(RGB)
输入参数:RGB是分析的真彩色图像;
输出参数:I返回灰度图。
RGB图像的每一层就是一个灰度图像,可直接
用彩色图像的某一层来作为彩色图像对应的灰度图像.
RGB或灰度图像转换为二值图像:
BW=im2bw (I,level)
输入参数:RGB或I是彩色或灰度图像;
level是阈值,取值在[0,1]之间 。
输出参数:BW为返回的二值图像对应的矩阵。
将灰色图像转换为二值图像:
im2bw(I,level)
level=graythresh(I3); %图像灰度处理
bw=im2bw(I3,level); %图像二值化处理
figure,imshow(bw) %显示处理后的图片
whos
—————————————————————————————————————————
MATLAB中运bai行who与whos的区别为:顺序排列du不同zhi、语法不同、用途不同。
一、顺序排列不同
1、who:who给出dao的列表只能按变量名的字母顺序排列。
2、whos:whos给出的列表可以按变量名的字母顺序排列,也可以按尺寸、所占字节数等顺序排列。
二、语法不同
1、who:who的语法为s = who (variable_list)。
2、whos:whos的语法为s = who(variable_list)和s = who(variable_list, qualifiers)。
三、用途不同
1、who:who用于列出当前工作空间中所有变量名。
2、whos:whos用于列出当前工作空间中所有变量,以及它们的名字、尺寸(比如一个矩阵或数组的行列维数)、所占字节数、属性等信息。
文本和字符
字符串用单引号包括,如果字符串内部也有单引号,则内部使用两个连续的单引号。
如果要查看变量类型的话,可以使用whos命令。
连接字符串使用方括号将要连接的字符串括在一起。
字符和数字之间也可以互相转换。