导航:首页 > 编程语言 > 地球矩阵编程视频

地球矩阵编程视频

发布时间:2022-11-17 03:46:30

① MATLAB编程与应用系列-第3章 矩阵运算(4)

矩阵的分解是矩阵相关运算中的重要内容,MATLAB提供了用于矩阵分解运算的多种函数。本节将集中介绍MATLAB所提供的矩阵分解运算函数的功能及使用。

矩阵的三角分解又称高斯消去法分解,它的目的是将一个矩阵分解成一个下三角矩阵L和一个上三角矩阵U的乘积,即A=LU。MATLAB提供了专门的函数lu来计算矩阵的LU分解。该函数的调用格式如下:

其中,返回矩阵U为上三角阵,矩阵L为下三角阵或其变换形式,且满足LU=X。返回矩阵P为单位矩阵的行变换矩阵,满足LU=PX。

奇异值分解在矩阵分析中占有极其重要的作用。MATLAB提供了用于矩阵奇异值分解的函数svd,该函数是利用LINPACK程序库中的ZSVDC编制而成的。在计算的过程中假如经过75步QR分解仍得不到一个奇异值,那么系统会给出“不收敛”的提示。奇异值分解函数svd的几种调用格式如下:

其中,命令①返回向量s包含矩阵X分解所得到的全部奇异值向量。命令② 返回一个与X同大小的对角矩阵S和两个酉矩阵U与V,且满足= U S V'。命令③ 得到一个“有效大小”的分解,如果m×n维矩阵X中m>n则只计算出矩阵U的前n列,矩阵S的大小为n×n。

MATLAB提供了eig函数来对矩阵进行特征值分解,该函数的几种调用格式如下:

其中,①计算矩阵A的特征值d,返回结果以向量形式存放。②计算方阵A和B的广义特征值d,返回结果以向量形式存放。③计算矩阵A的特征值对角阵D和特征向量阵V,使AV=VD成立。④计算矩阵A的特征值对角阵D和特征向量阵V,使AV=VD成立。当矩阵A中有与截断误差数量级相差不远的值时,该指令可能更精确。'nobalance'起误差调节作用。⑤计算矩阵A和B的广义特征值向量阵V和广义特征值阵D,满足AV=BVD。最后一条命令⑥由flag指定算法计算矩阵A和B的特征值D和特征向量V。其中,flag的可能值为:'chol' 和'qz' 。当flag值为'chol'时表示对B使用Cholesky分解算法,其中A为对称Hermitian矩阵,B为正定阵。当flag值为'qz'时表示使用QZ算法,其中A、B为非对称或非Hermitian矩阵。

MATLAB提供了chol函数来对矩阵进行Cholesky分解,该函数的调用格式为:

函数调用格式①如果X为n阶对称正定矩阵,则存在一个实的非奇异上三角阵R,满足R'*R = X;若X非正定,则产生错误信息。②不产生任何错误信息,若X为正定阵,则p=0,R与上相同;若X非正定,则p为正整数,R是有序的上三角阵。

正交矩阵是指矩阵的列向量相互正交,且各个列向量的长度相等。QR分解就是将矩阵A分解成一个正交矩阵与一个上三角矩阵的乘积。MATLAB提供了用于矩阵QR分解的函数,表3.7中介绍用于矩阵QR分解的函数调用格式和功能。
表3.7 矩阵QR分解

Schur分解将使用schur函数,该函数的调用格式为:

命令行①-③返回正交矩阵U和schur矩阵T,满足A = U T U'。其中,若A有复特征根,则flag='complex',否则flag='real'。

即使是实阵,在其特征值中也可能出现复数。实际使用中常需要把这一对对共轭复数特征值转化为一个(2x2)的实数块。函数调用格式为:

MATLAB提供了gsvd函数对矩阵进行广义奇异值分解,其具体调用格式为:

其中,函数调用格式①返回酉矩阵U和V、一个普通方阵X、非负对角矩阵C和S,满足A = U C X',B = V S X',C' C + S' S = I (I为单位矩阵)。A和B的列数必须相同,行数可以不同。函数调用格式②和①基本相同,而③则返回广义奇异值sigma值。

MATLAB提供了qz函数对矩阵进行特征值问题的QZ分解,该函数的调用格式为:

其中函数调用格式①中A、B为方阵,返回结果AA和BB为上三角阵,Q、Z为正交矩阵或其列变换形式,V为特征向量阵,且满足Q A Z= AA 和Q B Z = BB。命令行②产生由flag决定的分解结果,flag取值为'complex'表示复数分解(默认);取值为'real'表示实数分解。

如果矩阵H的第一子对角线下元素都是0,则H为海森伯格(Hessenberg)矩阵。如果矩阵是对称矩阵,则它的海森伯格形式是对角三角阵。MATLAB可以通过相似变换将矩阵变换成这种形式,具体调用格式为:

② 使用matlab编程:有一个4行5列的矩阵,编程求出其最大值以及最大值所处位置

举个例子,希望有所帮助。代码% 有一个4行5列的矩阵,编程求出其最大值以及最大值所处位置
clc; clear all;
A = rand(4, 5);
m = A(1); ind = [1 1];
for i = 1 : size(A, 1)
for j = 1 : size(A, 2)
if m < A(i, j)
m = A(i, j);
ind = [i j];
end
end
end
m
ind
A(ind(1), ind(2))

结果

③ 给出一个矩阵(二维数组),通过编程计算一下矩阵上三角元素的和,要求元素的值由键盘输入。

代码如下:

#include<stdio.h>

int main() {

int i, j;

int max, row, colum;

int a[3][4] = { { 1, 2, 3, 4 }, { 9, 8, 7, 6 }, { -10, 10, -5, 2 } };

max = a[0][0];

for (i = 0; i < 3; i++)

for (j = 0; j < 4; j++)

if (max < a[i][j]) {

max = a[i][j];

row = i;

colum = j;

}

printf("max=%d row=%d colum=%d ", max, row, colum);

return 0;

}

(3)地球矩阵编程视频扩展阅读

矩阵的分解:

1、LU分解(A = LU)

U是高斯消元结果,可视为对A左乘P进行行变换,PA = U,有A = P-1U,则行变换矩阵的逆即为L。L对角线上为1。

2、QR分解(A = QR)

Q是A正交化的结果,是A列空间的标准正交基,因为Q是以第一列为初始方向向量,对其他列向量进行变换,故R的第一列只有第一个元素有值,则R是上三角矩阵。a1 = R11 * q1,R11是一个数。

3、特征值分解(A = SS-1)

S为特征向量组成的矩阵,是特征值组成的对角阵。前提条件:S可逆要求所有特征向量线性无关。

若A为正定阵(光对称不行,因为奇异值是非负的),则S为正交阵,此时A = SST,正好可看作奇异值分解,正交阵乘非负特征值阵乘正交阵。




④ 任给出一个5*6的矩阵,编程求出其最大值和最小值

如用matlab来编程,以实现任给一个矩阵,求出其最大值和最小值,可以利用max()函数和min()函数,再加一个for循环语句去实现。

实现过程为

1、建立一个函数文件,如exfun(A),其内容

function [Amax,Amin]=exfun(A)

[m,n]=size(A);

B=[];C=[];

for i=1:m

B(i)=max(A(i,:));

C(i)=min(A(i,:));

end

Amin=min(C);Amax=max(B);

2、建立一个主程序,调用exfun(A)函数

A=floor(rand(5,6)*100) %随机矩阵

[Amax,Amin]=exfun(A)

3、运行上述程序,可以得到如下结果。

⑤ 编程输出下列矩阵: 13 14 15 16 9 10 11 12 5 6 7 8 1 2 3 4

#include<stdio.h>
#include<stdlib.h>
int main()
{int i,j,r=1,a[4][4];
for(i=0;i<4;i++)
for(j=0;j<4;j++)
a[i][j]=r++;
for(i=3;i>=0;i--)
{for(j=0;j<4;j++)
printf("%3d",a[i][j]);
printf("\n");}
system("pause");
return 0;
}
看看行不行,%&**&%

⑥ C语言:编程 矩阵

#include<stdio.h>
void main()
{ int a[4][2],b[2][4],i,j;
printf("键盘输入一个4行2列的矩阵\n");
for(i=0;i<4;i++)

for(j=0;j<2;j++)
scanf("%d",&a[i][j]);//按楼主意愿,并非定义同时初始化

for(i=0;i<4;i++)
for(j=0;j<2;j++)
b[j][i]=a[i][j];

for(i=0;i<2;i++)
{ for(j=0;j<4;j++)
printf("%d ",b[i][j]);
printf("\n");
}

}

⑦ 英飞拓监控矩阵键盘编程

C++ 实现。
#include <stdio.h>
#include <windows.h>
int Display();
int main()
{
Display();
return 0;
}
int Display()
{
SendMessage(FindWindow(0,0), WM_SYSCOMMAND, SC_MONITORPOWER, 1);
//关闭显示器 根据MSDN,这个参数如果是1,则 表示显示器处于低能耗状态。
Sleep(10000);
SendMessage(FindWindow(0,0), WM_SYSCOMMAND, SC_MONITORPOWER, -1); //打开显示器
return 0;
}

⑧ fortran编程 逆矩阵

以下是求5阶方阵的逆矩阵,fortran77程序。供参考。


c 求逆矩阵
c 在主程序中,设两个数组a(5,5),b(5,5)
c a(5,5)--存放5阶方阵
c b(5,5)--存放单位阵
c 在子程序中,设一个数组c(5,10),该数组是a、b阵拼接起来的
c 要实现数组的拼接和拆分,用公用语句实现
reala(5,5),b(5,5)
common/x/a,b
do10i=1,5
do10j=1,5
if(i.eq.j)then
b(i,j)=1
else
b(i,j)=0
endif
10 continue
callinverse
write(*,20)b
write(*,*)
write(*,20)((b(i,j),j=1,5),i=1,5)
20 format(1x,5f10.3)
c read(*,*)
end
c************************************
subroutineinverse
realc(5,10)
common/x/c
do10k=1,5
do20j=10,k,-1
20 c(k,j)=c(k,j)/c(k,k)
do40i=1,5
if(i.ne.k)then
do30j=10,k,-1
30 c(i,j)=c(i,j)-c(i,k)*c(k,j)
endif
40 continue
10 continue
end
c******************************
blockdata
reala(5,5),b(5,5)
common/x/a,b
dataa/3,1,0,2,10,-2,0,1,3,1,9,3,1,0,1,
1 1,0,1,1,0,1,2,0,2,10/
end

⑨ 视频矩阵的基本功能

视频矩阵的主要功能是进行视频信号的切换操作及控制,其本身是个复杂的计算机系统,还具有强大的附加功能,如视频信号丢失检测、分组、报警联动、字符叠加等。具体如下;
1、视频矩阵为视频切换设备,矩阵系统中任一输入图像可以切换至任一输出。
2、可以通过键盘或人机界面,实现对所有前端摄像机的各种控制功能。
3、视频矩阵采用组合式结构,可进行积木式搭接,随时扩充输入输出通道容量。
4、支持矩阵间的联网,可通过建立双向视频干线实现矩阵间的互联,形成一套完整的分布式矩阵系统。
5、可以对摄像机设置逻辑编号,并能按照摄像机的逻辑号选择调用摄像机图像。
6、具有多种复合控制功能,包括分组切换、宏控制、巡视等。
7、具有宏编程功能,对宏可设定按预定的时间序列和按照报警事件手动或自动执行。
8、可以控制辅助设备以增强系统功能,辅助设备包括报警输入/输出单元、干接点输出控制单元、通信口扩展单元、通信转换单元。
9、控制单元具有不间断热切换功能。原控制单元损坏时,备份控制单元能在线切换。可以接收其他系统[如门禁、周界报警、消防报警系统等]和设备(如图形用户界面、可编程逻辑控制器等)发来的事件信息来实现触发报警、摄像机调用、联动相应的操作一如使摄像机移动到预设位、控制辅助设备、执行宏操作等。
10、具有字符叠加功能,叠加项目至少包括年、月、日、时、分、秒、摄像机编号、摄像机注释、摄像机标识、监视器编号,叠加的内容和叠加的位置可以编程选择。
更多矩阵知识,请网络搜素“老向聊矩阵”大量免费视频供您参考学习!

⑩ 编程,蛇形矩阵

C语言实现:
#include<stdio.h>
#define N 100 //给数组定义一个最大值

void main()
{
int n,i,j,k,s=1;
static int a[N][N];

printf("如果您想要得到逆的蛇形矩阵,输入数字2,否则输入任意数字:\n");
scanf("%d",&s);

printf("输入矩阵阶数:\n");
scanf("%d",&n); //键盘输入矩阵阶数

for(i=0;i<n;i++) //完成左边斜上三角的赋值
{
for(j=0;j<n-i;j++)
{
k=i+j+1;
if(k%2==1) a[i][j]=k*(k-1)/2+i+1;
else a[i][j]=k*(k-1)/2+j+1;
}
}
for(i=1;i<n;i++) //完成左边斜上三角的赋值
{
for(j=n-i;j<n;j++)
{
k=i+j+1;
if(k%2==1) a[i][j]=n*n-(2*n-k+1)*(2*n-k)/2+n-j;
else a[i][j]=n*n-(2*n-k+1)*(2*n-k)/2+n-i;
}
}

for(i=0;i<n;i++) //打印蛇形数组
{
for(j=0;j<n;j++)
{
if(s==2) a[i][j]=n*n-a[i][j]+1; //是否要得到逆蛇形矩阵的判断和转换语句
printf("%d\t",a[i][j]);
}
printf("\n");
}

}

阅读全文

与地球矩阵编程视频相关的资料

热点内容
银河v10驱动重编译 浏览:889
电脑上文件夹右击就会崩溃 浏览:689
右美维持算法 浏览:938
php基础编程教程pdf 浏览:219
穿越之命令与征服将军 浏览:351
android广播重复 浏览:832
像阿里云一样的服务器 浏览:318
水冷空调有压缩机吗 浏览:478
访问日本服务器可以做什么 浏览:432
bytejava详解 浏览:448
androidjava7 浏览:384
服务器在山洞里为什么还有油 浏览:886
天天基金app在哪里下载 浏览:974
服务器软路由怎么做 浏览:292
冰箱压缩机出口 浏览:228
OPT最佳页面置换算法 浏览:644
网盘忘记解压码怎么办 浏览:853
文件加密看不到里面的内容 浏览:654
程序员脑子里都想什么 浏览:434
oppp手机信任app在哪里设置 浏览:189