三、Matlab窗口常用命令、快捷键及常用函数总结

基本语法总结

数据类型转换

%{
使用数字、矩阵在计算或接收值时,可能需要保存更大的值 或 实数范围值,因此需要转换数据类型类型
%}
s = int32(矩阵); % 将该矩阵所有元素均转换为32位有符号整型数字
s = double(矩阵); % 将该矩阵所有元素均转换为32位有符号整型数字
s = 1.0 / 2;% 参与计算中存在double型数据结果为double

数组及其操作

%{
对于数组,它是用于存储同类型的元素序列
%}
c = [1 2];% 定义了一个 1 * 2 的数组
a = c(1);% 将数组c(1)位置的值赋给a,注意Matlab中数组、矩阵、细胞数组的序号标号均从 1 开始
c(end+1) = 3; % 向数组c中添加新的元素
b = '123';% 创建字符串a
b = ['1','2','3'];% 与上面的形式创建效果一样

矩阵及其操作

  • 基本操作
%{
对于矩阵,它是图像的数学基本表达形式,在对图像进行处理时会经常用到
%}
c = [1 21 2];% 定义了一个 2 * 2 的矩阵
a = c(1,1);% 将c矩阵(1,1)位置的值赋给a,注意Matlab中数组、矩阵、细胞数组的序号标号均从 1 开始
  • 对矩阵中某一子区域进行操作
%{
当需要对矩阵的子区域进行操作时,可使用 矩阵名(子矩阵起始行:子矩阵结束行,子矩阵起始列:子矩阵结束列) 的形式进行操作
%}
a = [1,2,3;4,5,6;7,8,9];
a(1:2,1:2) % 输出对应于原矩阵第一行到第二行,第一列到第二列的 2*2 的子矩阵:[1,2;4,5]
a(1:2,1:2) = [0,0;0,0] % 对上述位置的子矩阵重新赋值,使原矩阵变为 [0,0,3;0,0,6;7,8,9]
  • 对两个矩阵(阵列)进行逻辑运算:&、|、xor
%{
两个矩阵可以进行逻辑运算,所得结果为 两矩阵对应位置元素 逻辑运算结果 组成的矩阵。
%}
a = [1,2,3];
b = [0,4,5];
a & b = [0,1,1] % 所得结果均为逻辑值(1表示真,0表示假),该结果如果用于 if 的条件判断,只有其中元素全为1(真)时才为真

细胞数组:cell

%{
对于细胞数组,其扩展了Matlab数组只能存储同类型数字的情况。使用细胞数组可以保存不同的数据类型的数据
%}
cell = {}; % 定义了一个空细胞数组
cell(end+1) = {{1},{1}};%将添加新的细胞数组到cell中 
cell{end+1} = 1;% 将数字1填充进细胞数组中(过程是先将1包裹为一个细胞数组,再放入cell中)
cell{end+1} = [1 2 3;1 2 3];% 将矩阵填充进细胞数组中(过程是先将矩阵包裹为一个细胞数组,再放入cell中)
a = cell(1);% 注意这样获取得到的值依然为细胞数组,只是该细胞数组只有一个元素1
a = cell{1};%  注意这样获取得到的值即为数字1
cell{2}(1,1) = 19;% 使用该形式,可以完成对第二个细胞数组元素(矩阵)中的(1,1)点的值进行修改(即在细胞数组中修改值)
b = cell{2};
b(1,1) = 19; % 注意,这个形式仅仅对b矩阵的(1,1)点的值进行了修改,并为改变cell细胞数组中的矩阵中的值

常用函数总结

用于查找向量或矩阵中非零元素的索引和值:find()

%{
find()函数用于查找向量或矩阵中非零元素的索引和值,常常用于判断矩阵中某一元素是否存在
%}
a = [11,22,33,0];
find(a) % 输出1,2,3(对应非零元素的索引值)

开根号:nthroot()

%{
nthroot()函数用于开指定次方根,具体说明如下
    ① 第一个参数,传入被开次方根的数
    ② 第二个参数,传入要开的次方数
%}
nthroot(4,2); % 输出 2

快速傅里叶变换:fft2()

%{
注意:fft2()只做傅里叶变换,并没有中心化
%}
in = imread('XXX.tif');
% 传入的矩阵需要是double型的
fft2(double(in));

快速中心化傅里叶变换:fftshift()

%{
注意:fftshift()使频谱中心化,需要和fft2()搭配使用
%}
in = imread('XXX.tif');
% 传入的矩阵需要是double型的
dft_noncenter = fft2(double(in));
dft_center = fftshift(dft_noncenter);

快速傅里叶反变换:ifft2()

%{
注意:ifft2()只做傅里叶反变换,并没有去中心化
%}
in = imread('XXX.tif');
% 传入的矩阵需要是double型的
dft_noncenter = fft2(double(in));
% 由于计算的精确度有限,结果会有虚部,使用 real() 取实部
idft_noncenter = real(iff2(dft_noncenter));

快速去中心化傅里叶反变换:ifftshift()

%{
注意:ifftshift()对频谱去中心化(相当于是对fftshift()的撤销操作),需要和ifft2()搭配使用
%}
in = imread('XXX.tif');
% 传入的矩阵需要是double型的
dft_noncenter = fft2(double(in));
dft_center = fftshift(dft_noncenter);
% 先去中心化,再傅里叶反变换
idft_center = real(ifft2(ifftshift(dft_center)));

数字转字符串:num2str()

求余数:mod()

%{
mod()用于求余数
函数参数说明:
    ① 第一个参数,传入被除数
    ② 第二个参数,传入除数
%}
mod(4,2); # 输出2

输入图像:imread()

%{ 
    ① 一般用法如下
    ② 所得结果为矩阵
%}
in = imread(图像物理地址字符串)

创建图像窗口:figure()

%{ 
    ① 一般用法如下
%}
figure;% 可直接创建一个图像窗口
figure('name',窗口名);% 可创建一个图像窗口并命名

在单个图像窗口中创建多个图片子窗口:subplot()

%{ 
    ① 一般用法如下
    subplot(r,c,n)
    r:要划分为的行数
    c:要划分为的列数
    n:当前所指向的子窗口位置(排序为第一行开始左到右,结束后换行在左到右,依次排序)
    ② 一般在figure后面显示图像函数前使用
%}
figure; % 创建一个图像窗口
subplot(1,2,1); % 把当前图像窗口分划为,1 * 2的子窗口,并且所在当前的位置为第一位

将数值矩阵转换为灰度图矩阵(每个矩阵元素为[0,1]中的数):mat2gray()

%{ 
    ① 一般用法如下
    ② 所得结果为各元素数值在[0 1]的实数矩阵
    ③ 常与inshow()搭配使用
%}
out =mat2gray(图像矩阵)

图像显示:imshow()

%{ 
    ① 一般用法如下
    ② 一般与 figure、subplot合用
    ③ imshow()默认将图像输出到[0 1]的灰度级内,存在超出该范围的值会进行自动的匹配灰度范围
    (可能导致显示不准确,在显示灰度图像时经常与mat2gray()搭配使用,或者传入[]让其自动匹配灰度级)
    ④ 注意,经过计算得到的输出图像的像素矩阵,其像素灰度值可能不在原图的灰度级范围内。
        可以手动调节匹配范围,也可以使用mat2gray()将输出图像的像素灰度值调至[0 1]范围内的实数
%}
figure;
subplot(1,3,1);
in =imshow(图像矩阵1) % 默认为[0 1]
subplot(1,3,2);
in =imshow(图像矩阵2,[0 255]) % 手动设置为[0 255]

subplot(1,3,3);
in =imshow(mat2gray(图像矩阵3)) % 转换为像素灰度值在[0 1]的实数矩阵,在[0 1]的灰度级中输出

用于缩放图像:imresize()

%{ 
    ① 一般用法如下
    imresize(I,n,p,v)
    I:为图像的矩阵
    n:为将该图像放大或缩小的倍数
    p,v:成对赋值,类似于 K-V.
        'Method','nearest'  最近邻域内插法
        'Method','bilinear' 双线性内插法
        'Method','bicubic'   双三次线性内插法
            作用为使用哪种插值方法将原图进行扩大或缩小
    ② 所得结果为矩阵
%}

out = imresize(img_72,1250 / 72,'Method','nearest');

输入一个矩阵,获得其行数 r 与 列数 c:[r,c] = size()

%{
    ① 一般用法如下
%}
[r,c] = size(图像矩阵);% 获得图像矩阵的行数 r 与 列数 c

创建 r 行 c 列的所有元素数值均为0的矩阵:zeros(r,c)

%{
    ① 一般用法如下
%}
s = zeros(r,c); %创建 r 行 c 列的所有元素数值均为0的矩阵s

将十进制数转换为二进制(字符串):dec2bin()

%{
    ① 一般用法如下
%}
 n = dec2bin(十进制数); %将十进制数转换为二进制(字符串)

用于直方图均衡化:histeq()

用于显示图像的直方图:imhist()


Matlab快捷键

快速注释:Ctrl + R

单行注释 :
%
多行注释 :
%{ 
%}

快速解注释:Ctrl + T


## 窗口常用命令 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/807d753d0d084cb1a93733df9c96f009.png)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ModelBulider

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值