0%

DATA604 Project2

一些matlab中的指令

importdata

从文件加载数据

1
2
3
4
5
A = importdata(filename)
A = importdata('-pastespecial')
A = importdata(___,delimiterIn)
A = importdata(___,delimiterIn,headerlinesIn)
[A,delimiterOut,headerlinesOut] = importdata(___)

说明

A = importdata(filename) 将数据加载到数组 A 中。

示例
A = importdata(‘-pastespecial’) 从系统剪贴板而不是文件加载数据。

A = importdata(___,delimiterIn) 将 delimiterIn 解释为 ASCII 文件 filename 或剪贴板数据中的列分隔符。您可以将 delimiterIn 与以上语法中的任何输入参数结合使用。

示例
A = importdata(___,delimiterIn,headerlinesIn) 从 ASCII 文件 filename 或剪贴板加载数据,并读取从第 headerlinesIn+1 行开始的数值数据。

示例
[A,delimiterOut,headerlinesOut] = importdata(___) 使用先前语法中的任何输入参数,在 delimiterOut 中额外返回检测到的输入 ASCII 文件中的分隔符,以及在 headerlinesOut 中返回检测到的标题行数。

  • E=importdata(‘baidu.txt’) 。即可将txt文件中的数据导入到矩阵
  • F=importdata(‘ ‘,d,h)函数中参数d为数据的分隔符号,参数h 含义为读取数据矩阵中从第 h+1 行开始的数据数值数据。
  • 命令[A , d , h ] = importdata(‘ baidu.txt’) ;可以检测到该文件中数据矩阵中的数据分隔符号d,以及数据矩阵中数值数据中的标题行数为h行

读取图片,使用该命令不仅可以读取电子文件中的数据,还可以将图片转化为相应的矩阵然后存储在矩阵中。使用代码:

B = importdata(‘1.jpg’);%读取文件到软件,将其转换为矩阵。

image(B);%将刚刚读取到的矩阵使用图示位置中的命令即可在软件中展现出来。

输入参数

  1. filename - 要导入的文件的名称和扩展名

    字符向量 | 字符串标量

  2. delimiterIn - 列分隔符

    字符向量 | 字符串标量

  3. headerlinesIn - ASCII 文件中的文本标题行数
    非负整数标量

输出参数

  1. A - 文件中的数据
    矩阵 | 多维数组 | 标量结构体数组
  2. delimiterOut - 在输入 ASCII 文件中检测到的列分隔符
    字符向量
  3. headerlinesOut - 在输入 ASCII 文件中检测到的文本标题行数
    整数

load

将文件变量加载到工作区中

一般用于mat文件

1
2
3
4
5
6
7
load(filename)
load(filename,variables)
load(filename,'-ascii')
load(filename,'-mat')
load(filename,'-mat',variables)
S = load(___)
load filename

说明

load(filename) 从 filename 加载数据。

如果 filename 是 MAT 文件,load(filename) 会将 MAT 文件中的变量加载到 MATLAB® 工作区。

如果 filename 是 ASCII 文件,load(filename) 会创建一个包含该文件数据的双精度数组。

load(filename,variables) 加载 MAT 文件 filename 中的指定变量。

load(filename,’-ascii’) 将 filename 视为 ASCII 文件,而不管文件扩展名如何。

load(filename,’-mat’) 将 filename 视为 MAT 文件,而不管文件扩展名如何。

load(filename,’-mat’,variables) 加载 filename 中的指定变量。

S = load(___) 使用前面语法组中的任意输入参数将数据加载到 S 中。

如果 filename 是 MAT 文件,则 S 是结构数组。

如果 filename 是 ASCII 文件,则 S 是包含该文件数据的双精度数组。

load filename 是该语法的命令形式。命令形式需要的特殊字符较少。您无需键入括号或者将输入括在单引号或双引号内。使用空格(而不是逗号)分隔各个输入项。

例如,要加载名为 durer.mat 的文件,以下语句是等效的:

load durer.mat % command form
load(‘durer.mat’) % function form
您可以包括先前语法中介绍的任何输入。例如,要加载名为 X 的变量:

load durer.mat X % command form
load(‘durer.mat’,’X’) % function form
当有任何输入(例如 filename)为变量或字符串时,请不要使用命令格式。

tic和toc

tic和toc是用来记录matlab命令执行的时间
tic用来保存当前时间,而后使用toc来记录程序完成时间。
两者往往结合使用,用法如下:
tic
operations
toc
显示时间单位:秒
TiC和toc函数可以计算运行一段代码的时间

data(:,2:end)和data(:,1)

data 是一个矩阵

data(x,y) x是行数 y是列数

data(:,y)就是指y列对应的所有行的值组成的一个向量

data(:,[y1:y2]) 就是指y1到y2列的对应的所有行的值组成的一个矩阵

此外 data(:,[y1:y2])与data(:,y1:y2)结果是一样的

plot(1:784, pca1, ‘.’)

plot(x,y)

创建二维直线图,x y 为相应点集

plot(X1,Y1,…,Xn,Yn)

画n条线(在一个窗口下绘制多条曲线之方法一)

在一个窗口下绘制多条曲线之方法二

hold on

plot(x,y1);

plot(x,y2);

hold off

plot(Y)

Y是矩阵,这表示矩阵的每一行都画一条直线

plot(x,y1,x,y2,’–’,x,y3,’.’)

画三种不同风格的线,其中’ ‘中的内容可以修改

背景色

set(gcf,‘color’,‘none’); %无背景

  set(gcf,‘color’,[0,0,0]); %背景色为黑

  set(gcf,‘color’,[1,1,1]); %背景色为白

颜色和线条

image-20220417214211274

pca 主成分分析

Principal component analysis of raw data

coeff = pca(X) coeff = pca(X,Name,Value) [coeff,score,latent] = pca(___) [coeff,score,latent,tsquared] = pca(___) [coeff,score,latent,tsquared,explained,mu] = pca(___)


[coeff,score,latent] = pca(___) also returns the principal component scores in score and the principal component variances in latent. You can use any of the input arguments in the previous syntaxes.

Principal component scores are the representations of X in the principal component space. Rows of score correspond to observations, and columns correspond to components.

The principal component variances are the eigenvalues of the covariance matrix of X.


https://www.mathworks.com/help/stats/pca.html
https://stackoverflow.com/questions/39580926/how-do-i-load-in-the-mnist-digits-and-label-data-in-matlab
https://www.mathworks.com/help/deeplearning/ug/data-sets-for-deep-learning.html
To load the data from the files as MATLAB arrays, place the files in the working directory, then use the helper functions processImagesMNIST and processLabelsMNIST, which are used in the example Train Variational Autoencoder (VAE) to Generate Images.

原本需要自建functions

cat

C = cat(dim,A,B)

C = cat(dim,A1,A2,A3,A4,…)

dim为1时,将矩阵上下拼接:[A;B],dim为2时,将矩阵左右拼接:[A,B],dim=3时则可以构造三维数组。

imshow

mshow即image show,即show image,显示图像的意思

  • imshow(I)在图形中显示灰度图像I。 imshow使用默认的显示范围作为图像数据类型,并优化图形,轴和图像对象属性以进行图像显示。
  • imshow(I,[low high])显示灰度图像I,并将显示范围指定为两个元素的矢量[low high]。
  • imshow(I,[])显示灰度图像I,根据I中的像素值范围缩放显示。imshow使用[min(I(:))max(I(:))]作为显示范围。 imshow将I中的最小值显示为黑色,将最大值显示为白色。
  • imshow(RGB)在图形中显示真彩色图像RGB。
  • imshow(BW)在图中显示二进制图像BW。对于二进制图像,imshow将值为0的像素显示为黑色,将值为1的像素显示为白色。
  • imshow(X,map)显示带有颜色图映射的索引图像X。一个颜色图矩阵可以具有任意数量的行,但必须恰好具有3列。每一行都被解释为一种颜色,其中第一个元素指定红色的强度,第二个绿色指定第三个蓝色。可以在间隔[0,1]上指定色彩强度。
  • imshow(filename)显示存储在文件名指定的图形文件中的图像。
  • imshow(,Name,Value)使用名称-值对控制操作的各个方面来显示图像。
  • himage = imshow(___)返回由imshow创建的图像对象。

reshape

reshape是对矩阵的元素重新排列的方法,比如可以将3 * 6的矩阵转换成9 * 2的矩阵,这里A、B元素个数需相同。

需要注意的是reshape是按列读取,然后按列摆放,所以,需要这个原则和具体的问题,进行合理的转置操作,达到效果。

重组的规则如下:
总是先处理低维的,再处理高维的,比如要把46的A变为64的B,就要先扫描A的第一列,扫描过程中行数不断发生变化,列数隔一段时间变化一次,这就是前面说的:先处理低维再处理高维(行是低维,列比行高一维)

因此,把4 * 6的A变为4 * 3 * 2的C,扫描和赋值所遵循的规则就是:低维坐标先改变,高维坐标后改变

predict

(没看懂)

diag

  1. diag函数生成对角矩阵

  2. diag函数读取矩阵对角线

fitcknn

拟合k最近邻分类器,Fit k-nearest neighbor classifier

句法

Mdl = fitcknn(Tbl,ResponseVarName)
Mdl = fitcknn(Tbl,formula)
Mdl = fitcknn(Tbl,Y)
Mdl = fitcknn(X,Y)
Mdl = fitcknn(___,Name,Value)

描述

Mdl = fitcknn(Tbl,ResponseVarName)根据表中的输入变量(也称为预测变量、特征或属性)和输出(响应) 返回k最近邻分类模型。TblTbl.ResponseVarName

Mdl = fitcknn(Tbl,formula) 根据表中的输入变量返回一个k最近邻分类模型Tbl。 formula是响应的解释模型和 中的预测变量的子集Tbl。

Mdl = fitcknn(Tbl,Y)根据表中的预测变量和响应数组 返回一个k最近邻分类模型。TblY

Mdl = fitcknn(X,Y) 返回基于预测数据和响应 的k最近邻分类模型。XY

Mdl = fitcknn(___,Name,Value) 使用前面的任何语法来拟合具有由一个或多个名称-值对参数指定的附加选项的模型。例如,您可以指定平局算法、距离度量或观察权重。

subplot

  • subplot(m,n,p)

    subplot(m,n,p) 将当前图形划分为 m×n 网格,并在 p 指定的位置创建坐标轴。MATLAB® 按行号对子图位置进行编号。第一个子图是第一行的第一列,第二个子图是第一行的第二列,依此类推。如果指定的位置已存在坐标轴,则此命令会将该坐标轴设为当前坐标轴

  • subplot(m,n,p,‘replace’)
    subplot(m,n,p,‘replace’) 删除位置 p 处的现有坐标轴并创建新坐标轴。

  • subplot(m,n,p,‘align’)
    subplot(m,n,p,‘align’) 创建新坐标轴,以便对齐图框。此选项为默认行为。

  • subplot(m,n,p,ax)
    subplot(m,n,p,ax) 将现有坐标轴 ax 转换为同一图形中的子图。

  • subplot(‘Position’,pos)
    subplot(‘Position’,pos) 在 pos 指定的自定义位置创建坐标轴。使用此选项可定位未与网格位置对齐的子图。指定 pos 作为 [left bottom width height] 形式的四元素矢量。如果新坐标轴与现有坐标轴重叠,新坐标轴将替换现有坐标轴。

  • subplot(,Name,Value)
    subplot(
    ,Name,Value) 使用一个或多个名称-值对组参数修改坐标轴属性。有关属性列表,请参阅 Axes 属性。在所有其他输入参数之后设置坐标轴属性。

  • ax = subplot()
    ax = subplot(
    ) 返回创建的 Axes 对象。以后可以使用 ax 修改坐标轴。有关属性列表,请参阅 Axes 属性。

  • subplot(ax)
    subplot(ax) 将 ax 指定的坐标轴设为父图的当前坐标轴。如果父图尚不是当前图形,此选项不会使父图成为当前图形。