• Temp = zeros(10000,8); %创建一个1000行8列的二维矩阵,初始化为0
Temp = zeros(10000,8);  %创建一个1000行8列的二维矩阵,初始化为0

展开全文
• 矩阵适合作坐标变换，而C语言的数组则较为麻烦，需要创建二维数组，写for循环； 方法一：plot函数 A = [2,2,6,6,2;4,8,8,4,4]; plot(A(1,:),A(2,:)); axis([0 14 0 14]); title('4 \times 4 rectangle'); (2,4),(2,...

## 图形绘制及坐标变换

### 矩形的绘制和坐标变换示例

MATLAB代码

思考为什么用MATLAB？矩阵适合作坐标变换，而C语言的数组则较为麻烦，需要创建二维数组，写for循环；

方法一：plot函数

A = [2,2,6,6,2;4,8,8,4,4];
plot(A(1,:),A(2,:));
axis([0 14 0 14]);
title('4 \times 4 rectangle');

$(2,4),(2,8),(6,4),(6,8)$为矩形的四个顶点
$A= \begin{bmatrix} 2 & 2 & 6 & 6 & 2\\ 4 & 8 & 8 & 4 & 4\\ \end{bmatrix}$
这里利用了plot函数的连线性质，可以用数值法绘制函数的例子理解

方法二：line函数

A = [2 6 6 2 2;
4 4 8 8 4];
figure(1);
line(A(1, 1:2), A(2, 1:2));
line(A(1, 2:3), A(2, 2:3));
line(A(1, 3:4), A(2, 3:4));
line(A(1, 4:5), A(2, 4:5));
axis([0 14 0 14]);
title('4 \times 4 rectangle');

A(1 , 1:2)= [2, 6]

坐标变换

• 平移变换

$\begin{bmatrix} x' & y' & 1 \end{bmatrix} =$
$\begin{bmatrix} x & y & 1\\ \end{bmatrix} \begin{bmatrix} 1 & 0 & 0\\ 0 & 1 & 0\\ t_x & t_y & 1\\ \end{bmatrix} \\ T= \begin{bmatrix} 1 & 0 & 0\\ 0 & 1 & 0\\ t_x & t_y & 1\\ \end{bmatrix}$

• 比例变换

$T= \begin{bmatrix} s_x & 0 & 0\\ 0 & s_y & 0\\ 0 & 0 & 1\\ \end{bmatrix}$

• 旋转变换

$T= \begin{bmatrix} \cos\theta & \sin\theta & 0\\ -\sin\theta & \cos\theta & 0\\ 0 & 0 & 1\\ \end{bmatrix}$

a1 = [2, 4];
a2 = [2, 8];
a3 = [6, 8];
a4 = [6, 4];
A = [2,2,6,6,2;
4,8,8,4,4];

%define transforming matrixs
t_x = 1;
t_y = 1;
s_x = 2;
s_y = 2;
theta = pi/2;
T_trans = [1 0 0;
0 1 0;
t_x t_y 1];
T_scale = [s_x 0 0;
0 s_y 0;
0 0 1];
T_rot = [cos(theta) sin(theta) 0;
-sin(theta) cos(theta) 0;
0 0 1];

%compose transforming
a1_1 = [a1 1]*T_trans;
a2_1 = [a2 1]*T_trans;
a3_1 = [a3 1]*T_trans;
a4_1 = [a4 1]*T_trans;
A_trans = [a1_1(1, 1:2)' a2_1(1, 1:2)' a3_1(1, 1:2)'...
a4_1(1, 1:2)' a1_1(1, 1:2)'];

a1_2 = [a1 1]*T_scale;
a2_2 = [a2 1]*T_scale;
a3_2 = [a3 1]*T_scale;
a4_2 = [a4 1]*T_scale;
A_scale = [a1_2(1, 1:2)' a2_2(1, 1:2)' a3_2(1, 1:2)'...
a4_2(1, 1:2)' a1_2(1, 1:2)'];

a1_3 = [a1 1]*T_rot;
a2_3 = [a2 1]*T_rot;
a3_3 = [a3 1]*T_rot;
a4_3 = [a4 1]*T_rot;
A_rot = [a1_3(1, 1:2)' a2_3(1, 1:2)' a3_3(1, 1:2)'...
a4_3(1, 1:2)' a1_3(1, 1:2)'];

%plot
plot(A(1,:),A(2,:), 'linewidth', 1), hold on;
axis equal;
axis([-10 20 0 20]);
title('4 \times 4 rectangle');
plot(A_trans(1, :), A_trans(2, :) ,'linewidth', 1), hold on;
plot(A_scale(1, :), A_scale(2, :) ,'linewidth', 1), hold on;
plot(A_rot(1, :), A_rot(2, :) ,'linewidth', 1), hold on;
grid on;
legend('formal figure', 'x move 1, y move 1', 'scale\times 2', 'rot /pi/2');

a1 = [2, 4];
a2 = [2, 8];
a3 = [6, 8];
a4 = [6, 4];
A = [2,2,6,6,2;
4,8,8,4,4];

%define transforming matrixs
t_x = 1;
t_y = 1;
s_x = 2;
s_y = 2;
theta = pi/2;
T_trans = [1 0 0;
0 1 0;
t_x t_y 1];
T_scale = [s_x 0 0;
0 s_y 0;
0 0 1];
T_rot = [cos(theta) sin(theta) 0;
-sin(theta) cos(theta) 0;
0 0 1];

%compose transforming
a1_1 = [a1 1]*T_trans;
a2_1 = [a2 1]*T_trans;
a3_1 = [a3 1]*T_trans;
a4_1 = [a4 1]*T_trans;
A_trans = [a1_1(1, 1:2)' a2_1(1, 1:2)' a3_1(1, 1:2)'...
a4_1(1, 1:2)' a1_1(1, 1:2)'];

a1_2 = [a1 1]*T_scale;
a2_2 = [a2 1]*T_scale;
a3_2 = [a3 1]*T_scale;
a4_2 = [a4 1]*T_scale;
A_scale = [a1_2(1, 1:2)' a2_2(1, 1:2)' a3_2(1, 1:2)'...
a4_2(1, 1:2)' a1_2(1, 1:2)'];

a1_3 = [a1 1]*T_rot;
a2_3 = [a2 1]*T_rot;
a3_3 = [a3 1]*T_rot;
a4_3 = [a4 1]*T_rot;
A_rot = [a1_3(1, 1:2)' a2_3(1, 1:2)' a3_3(1, 1:2)'...
a4_3(1, 1:2)' a1_3(1, 1:2)'];

%plot
plot(A(1,:),A(2,:), 'linewidth', 1), hold on;
axis equal;
axis([-10 20 0 20]);
title('4 \times 4 rectangle');
plot(A_trans(1, :), A_trans(2, :) ,'linewidth', 1), hold on;
plot(A_scale(1, :), A_scale(2, :) ,'linewidth', 1), hold on;
plot(A_rot(1, :), A_rot(2, :) ,'linewidth', 1), hold on;
grid on;
legend('formal figure', 'x move 1, y move 1', 'scale\times 2', 'rot /pi/2');

展开全文
• 矩阵二维数组，其中向量和标量都是矩阵的特例，0×0矩阵是空矩阵 数组：可以一维数组，二维，多维 一.矩阵创建 1.直接输入创建 a=[1 2 3;4 5 6] 2.通过语句创建 ① from：step：to 该方法可以生成一个行向量，...

## 矩阵和数组

标量：1×1的矩阵
向量：n×1的矩阵或者1×n的矩阵
矩阵：二维数组，其中向量和标量都是矩阵的特例，0×0的矩阵是空矩阵
数组：可以一维数组，二维，多维

### 一.矩阵的创建

###### 1.直接输入创建

a=[1 2 3;4 5 6]

###### 2.通过语句创建

① from：step：to
该方法可以生成一个行向量，其中：
from：开始值
step：步进(默认为1)
to：结束值

② linespace(a,b,n)和logspace(a,b,n)
这两个方法可以生成一个行向量
其中：a,b,n分别表示开始值，结束值，生成数个数（n默认为50）

linespace(a,b,n)从a到b生成线性的n个数据(即间隔相等)
例如：linespace(1,5,3) % [1,3,5]

logspace(a,b,n)从10a和10b之间按照对数等分成n个元素
例如：logspace(0,2,3) %[1,10,100]

###### 3.通过函数生成特殊矩阵
函数名 功能
zeros(m,n) 产生m×n的全0矩阵
ones(m,n) 产生m×n的全1矩阵
rand(m,n) 产生均匀分布的m×n随机矩阵，元素取值范围为0.0~1.0
randn(m,n) 产生正态分布的m×n随机矩阵
magic(m,n) 产生Ｎ阶魔方矩阵（矩阵的行、列和对角线上的元素的和相等）
eye(m,n) 产生m×n的单位矩阵
true(m,n) 产生m×n的逻辑矩阵，全为true
false(m,n) 产生m×n的逻辑矩阵，全为false

### 二.矩阵的访问

###### 1.单下标访问

在matlab中单下标就是把一个矩阵的所有列从左到右连接成一个一维长列，然后对元素位置进行编号。
假设矩阵A为

12 43 72
22 51 83
33 62 92

则矩阵A编号

1 4 7
2 5 8
3 6 9

单下标访问
A(3) %得到33

###### 2.双下标访问

对于矩阵A(r,c)，其中
r是row，代表行
c是column，代表列

###### 3.子块矩阵访问

对于矩阵a

1 2 0
3 4 0
5 6 9

全下标方式
① a([1 3],[2 3]):取行数为1、3，列数为2、3的元素构成子矩阵

2 0
6 9

② a(1:3,2:3):取行数为1 ~ 3,列数为2 ~ 3

2 0
4 0
6 9

③ a(:,3): ’ : '代表取所有行，这里取1~3行，3列

0
0
9

单下标方式

a([1 3;2 6]):取单下标为1，3，2，6的元素构成子矩阵

1 5
3 6

会访问就会赋值
😄

赋值成空矩阵[]就行

### 五.大矩阵的生成

两个大小相同的矩阵A，B

左右拼接
[A B]

上下拼接
[A;B]

repmat(A,m,n) %以矩阵A为一个元素生成m×n的大矩阵

### 六.矩阵的翻转和变形

函数名 功能
triu(X) 产生X矩阵的上三角矩阵，其余元素补0
tril(X) 产生X矩阵的下三角矩阵， 其余元素补0
flipud(X) 使矩阵X沿水平轴上下翻转
fliplr 使矩阵X沿垂直轴左右翻转
flipdim(X,dim) 使矩阵X沿特定轴翻转。dim=1，按行维翻转；dim=2，按列维翻转
rot90(X) 使矩阵X逆时针旋转90度
reshape(X,m,n) 将X的行列排列成m行n列。元素的单下标是不变的

### 七.矩阵信息获取

函数名 功能
size() 返回矩阵大小，m×n
ndims 返回矩阵的维度（列数）
length 返回行数
numel 返回元素个数

### 八.矩阵的运算

①矩阵的函数运算

函数名 功能
det(X) 计算方阵行列式
rank(X) 求矩阵的秩，得出的行列式不为0的最大方阵边长
inv(X) 求矩阵的逆阵，当方阵X的det(X)不等于0，逆矩阵才存在。X和X-1相乘为单位矩阵
[v,d]=eig(X) 计算矩阵特征值和特征向量。如果方程Xv=vd存在非零解，则v为特征向量，d为特征值
diag(X) 产生X矩阵的对角阵
[l,u] = lu(X) 方阵分解为一个准下三角方阵和一个上三角方阵的乘积。l为准下三角矩阵，必须交换两行才可以成为真的下三角阵
[q,r] = qr(X) m×n阶矩阵X分解为一个正交方阵Q和一个与X同阶的上三角矩阵R的乘积。方阵Q的边长为矩阵X的n和m中的较小着，且其行列式值为1

②矩阵和数组的算术运算
(1)矩阵和数组的加减运算
1.矩阵加减表达式分别为"A+B",“A-B”。
AB矩阵必须是大小相同才可以进行加减运算如果AB有一个是标量，则该标量与矩阵的每个元素进行运算。
2.矩阵的乘法运算表达式为"A*B"
矩阵相乘符合线性代数中矩阵相乘，
数组相乘是对应元素两两相乘，数组的尺寸完全一致

③矩阵和数组的转置

矩阵转置 数组转置
A’表示矩阵A的转置，如果A为复数矩阵，则为共轭转置 A.'表示数组A的转置，如果数组A为复数矩阵，则不是共轭转置

④矩阵和数组的数学函数

函数名 含义
abs 绝对值或者复数模
sqrt 平方根
real 取实部
imag 取虚部
conj 复数共轭
sin 正弦
asin 反正弦
sinh 双曲正弦
cosh 双曲余弦
tanh 双曲正切
rat 有理数近似
mod 取余
round 四舍五入到整数
fix 向最接近0取整
floor 向下取整
ceil 向上取整
sign 符号函数
rem 求余数留数
exp 自然指数
log 自然对数
log10 以10为底的对数
pow2 2的幂
bessel 贝塞尔函数
gamma 伽马函数
展开全文
• 　（2）eye() -- 单位矩阵，不支持二维以上的矩阵生成 　（3）rand() -- 随机矩阵，只用于生成0~1的平均分布的随机数，不包括0和1 　（4）compan() -- 伴随矩阵，只适用于向量 　（5）magic()...

一、矩阵和数组的创建

函数法主要用于一些具有特许规律的矩阵。

（1）zeros() -- 全零矩阵生成，ones() -- 全1矩阵

（2）eye() -- 单位矩阵，不支持二维以上的矩阵生成

（3）rand() -- 随机矩阵，只用于生成0~1的平均分布的随机数，不包括0和1

（4）compan() -- 伴随矩阵，只适用于向量

（5）magic() -- 魔方矩阵，矩阵每行、每列及两条对角线上元素和都相等

（6）diag() -- 对角矩阵，triu() -- 上三角矩阵，tril() -- 下三角矩阵

二、基本操作

1. size(A) --获取矩阵A的行数和列数，length() -- 获取矩阵长度，numel()--获取元素个数总和，ndims()--获取矩阵维数

2. 元素访问：对于矩阵magic(3)，可通过A（1，3）访问第一行第三列的元素，同时在矩阵中也是基于列的第七个元素，也可以按照单下标机制访问，即A(7)。

diag()既可用于创建对角矩阵，也能用于访问矩阵对角元素。find()--用于查找矩阵中的非零元素。

三、简单运算

1. 连接函数：[A, B]或horzcat(A, B) 水平连接矩阵；[A; B]或vertcat(A, B) 垂直连接矩阵

2. 翻转函数：fliplr() -- 矩阵左右翻转，flipud() -- 上下翻转，transpose() -- 得到转置矩阵

3. 特殊运算

det() -- 计算行列式的值； inv() -- 求逆矩阵； rank() -- 求矩阵的秩； eig() -- 求矩阵特征值

转载于:https://www.cnblogs.com/arthurLeo/p/3410944.html

展开全文
• 1.一个三维数组由行、列和页三维组成，其中每一页包含一个由行和列构成的二维数组。 2.利用标准数组函数创建多维数组 A=zeros(4,3,2) 生成一个4行3列2页的三维全0数组，ones，rand和randn等函数有相似...
• 创建二维数组 方法一：使用“[]”操作符 数据元素必须要在[]中进行输入； 行与行之间须用分号“；”间隔，也可以用回车键进行分割 行间元素用空格或者“，”间隔 例： a=[1,2,3;4,5,6;7,8,9] 方法二：命令函数 ...
• 1、创建一个 4*5 的随机矩阵，提取第一行和第行中大于 0.3 的元素组成矩阵。 2、设 ,把X=0~2π 区间分为 125 点,画出以x为横坐标,y为中坐标的曲线。 3、设 ,要求在 区间内画出x,y,z 三曲线。 4、设 ,求定义域 内...
• 向量是一维数组，矩阵二维数组。 MATLAB中的特殊数组 zeros()函数是用来创建一个全零的数组 例如 zeros(5) MATLAB执行上面示例代码，得到以下结果 - Trial>> zeros(5) ans = 0 0 0 0 0 0 0 0 0 0 0 0 ...
• )设计 5.1GUIDE简介 5.1.1启动GUIDE”” 5.1.2输出编辑器 5.1.3GUIDE模板 5.1.4运行GUI 5.1.5GUIFIG文件和M文件 5.2创建GUI 5.2.1设计GUI 5.2.2完成GUI 5.2.3设置GUI组件的属性 ...
• 0. Basics 赋单个值：a = 1 （内部函数）：d=cos(a) 特殊变量：ans ...所有MATLAB变量都是多维数组，其中矩阵二维数组 创建数组：a = [1 2 3 4]（空格分隔元素）a = [1,2,3,4]（逗号分隔元素）这里a是个...
• 4矩阵matrix 1创建矩阵 矩阵是一个矩形的mn数组即二维数组在MATLAB矩阵创建应遵循以下基本规则 矩阵元素应用方括号[]括住 每行内的元素间用逗号,或空格隔开 行与行之间用分号;或回车键隔开 元素可以是数值或...
• 数组操作 创建向量 创建一个1-9的一向量 起始值:终值 ...选取A矩阵的第一行和第行，选取第三列 (选取行,选取列) B = A(1:2, 3) index是竖着从左往右数的，先上下，再左右。 基于原有矩
• 采用函数句柄传递你定义MATLAB求解器计算的量、例如大规模矩阵或者Jacobian模式的函数。 如果你喜好采用字符串儿传递你的函数，matlab求解器将回溯匹配。 在老的matlab版本里，通过传递标志来规定求解器的状态和...
• 2、二维动态图形制作 命令格式： m=moviein(n) 创建具有n列（n帧）的矩阵m,每一列代表一帧 m(i)=getframe 将plot()等命令产生的图放在m中 以列的形式 movie(m,k,ftp) 播放影片 每秒ftp的
• function [ opts ] = PrepareData_Char_RNN( opts ) max_char=67; x = textread('train_x.txt');%20570*65 x(:,end)=[];%去掉第二维最后一组，x变为20570*64 opts.train = zeros(max_char, ...%创建一个0矩阵，维数
• 2、掌握二维图形、三维曲线和曲面图形的绘制以及标注； 二、实验内容： 1、利用“：”操作符和 linspace 函数生成数组 a=[0,6,12,18,24,30,36,42]，并将数组 a 分别转化为 4*2 和 2*4 的矩阵。 2、在MATLAB中输入...
• 概述：数字图像的本质就是矩阵，利用灰度的加权平均计算公式（Gray=0.299R+0.587G+0.114*B），可以将RGB数字图像灰度化，变成我们常说的“黑白照”。... //创建0二维矩阵保存灰度信息 ans=uint8(ans); /
• 3 二维数组;5 数组运算与矩阵运算;poly(a) 创建特征根对应多项式;7 关系运算逻辑运算和运算符;第三章 数据的可视化;第四章 M文件和程序设计;if-elseif-else结构;switch-case结构;2 循环控制;3 人机交互控制;第五章 ...
• rand用于创建一个二维r*c的矩阵，随机值为(0,1) B=rand(3,4) abs(B) 表示对这个矩阵中的每一个值均取绝对值 round(B)表示对每一个值四舍五入取得最接近的整数 std(B)向量x的元素的标准差d,这里以列为单位 diff...
• VC_6_0Matlab编程矩阵电路程序.pdf VC_6_0实现客户端与服务器端通讯.pdf VC_6_0实现计算方法中的曲线拟合.pdf VC_6_0读写Access数据库中图像字段的方法研究.pdf VC_6_0通过ADO连接数据库的通用方法研究.pdf VC_SQL...
• VC_6_0Matlab编程矩阵电路程序.pdf VC_6_0实现客户端与服务器端通讯.pdf VC_6_0实现计算方法中的曲线拟合.pdf VC_6_0读写Access数据库中图像字段的方法研究.pdf VC_6_0通过ADO连接数据库的通用方法研究.pdf VC_SQL...
• VC_6_0Matlab编程矩阵电路程序.pdf VC_6_0实现客户端与服务器端通讯.pdf VC_6_0实现计算方法中的曲线拟合.pdf VC_6_0读写Access数据库中图像字段的方法研究.pdf VC_6_0通过ADO连接数据库的通用方法研究.pdf VC_SQL...
• VC_6_0Matlab编程矩阵电路程序.pdf VC_6_0实现客户端与服务器端通讯.pdf VC_6_0实现计算方法中的曲线拟合.pdf VC_6_0读写Access数据库中图像字段的方法研究.pdf VC_6_0通过ADO连接数据库的通用方法研究.pdf VC_SQL...
• M AT L A B有强有力的二维、三维图形工具。 M AT L A B 能与其他程序一起使用。例如， M AT L A B 的图形功能，可以在一个 F O RT R A N 程序中完成可视化计算。 2 5个不同的M AT L A B工具箱可应用于特殊的应用...
• % 单层感知器 %% 1.newp--创建一个感知器 %{ 具体用法: ... P: P是一个R×2的矩阵,R为感知器中...0,1]表示输入向量是二维向量[x1,x2],且x1∈[-1,1],x2∈[0,1] T: T表示输出节点的个数,标量 TF: 传输函数,可选hardlim
• //data[rows*cols]二维数组：X1i,X2i......Xni,Yi(i=0 to rows-1) //rows:数据行数；cols数据列表；Answer[cols]:返回回归系数数组（B0,B1......Bn） //SquarePoor[4]:返回方差分析指标：回归平方和，剩余平方和，...
• 二维矩阵，如下：a1 = np.zeros((3,4)) # 创建3*4全零二维数组输出：array([[ 0., 0., 0., 0.], [ 0., 0., 0., 0.], [ 0., 0., 0., 0.]])可以看出创建了一个3×4的矩阵，由于python与matlab都是行优先...

matlab 订阅