matlab矩阵

(MATLAB)层次聚类

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-03 01:05:11
前言 参考书: 齐敏《模式识别导论》 参考: 论坛 附上截图: 代码 close all; clear all; clc; m=4; n=2; X=randn(m,n); %产生一个m*n的随机项矩阵,这里用4*2矩阵,数据量较小 Y=pdist(X); % 计算 X 中各对行向量的相互距离,得到的Y为行向量 %Y %进行查看 y=squareform(Y) %转换为方阵更易于观察 y % z=linkage(y) %dendrogram(z) Z=linkage(Y); %产生层次聚类树 dendrogram(Z) %可视化层次聚类树 Z %Z是一个(m-1)*3的矩阵,Z数组的前两列是索引下标列,最后一列是距离列 效果图如下: 其中,横坐标为index,纵坐标为距离。比如,图中2号和4号的距离为1.0228。 打印出来的: 分析: 对于上面图中的y,其元素表示的是距离。比如第一行中,第一行第一列的0表示1号到1号的距离,第一行第二列的2.7916可以表示1号到2号的距离,第一行第三列的1.5193是1号到3号的距离,以此类推。 根据层次聚类的原理,按照输出数据y算一下。先要找出y中非0的最小值。在矩阵y中是1.0228,位于第四行第二列,表示2号和4号的距离。因此先要将2号和4号合并起来归为一类,标记为(m+1)号,即5号。之后 更新1、3、5号之间的距离 ,1

matlab学习记录

↘锁芯ラ 提交于 2020-02-01 12:26:11
在毕业实习项目高光谱图像解混中,需要使用Matlab语言来编写解混算法。我在之前的学习过程中也尚未接触过Matlab平台的开发,算是一个入门新手。借此机会也对学习过程遇到的知识点稍作记录。 正文 一、冒号的用法 1、表示该维度上的所有元素 对于矩阵来说,冒号表示该维度上的所有元素。 例如: 矩阵A = $$ left[ begin{matrix} 1 & 2 & 3 4 & 5 & 6 7 & 8 & 9 end{matrix} right] $$ A(1, :1)表示矩阵A的第一行。 则 A(1, :1) = ( https://leanote.com/api/file/getImage?fileId=583c3a08ab644137810193e9 ) $$ left[ begin{matrix} 1 & 2 & 3 end{matrix} right] $$ 大专栏 matlab学习记录 阵定义" class="headerlink" title="2、进行矩阵定义">2、进行矩阵定义 Matlab定义矩阵的一种方法是: A = s:d:f 其中: s:表示起始值; d:表示增量; f:表示终点 若矩阵A = $$ left[ begin{matrix} 1 & 2 & 3 & 4 & 5 4 & 5 & 6 & 7 & 8 0 & 1 & 4 & 7 & 8 0 & 2 &

MATLAB入门(向量与矩阵基本操作)

旧街凉风 提交于 2020-02-01 10:14:16
MATLAB向量的创建 1、行向量 行向量有两种表示方法 %示例1 R1 = [1 2 3 4 5] R2 = [1,3,5,7,9] R = R1 + R2 %结果1 R1 = 1 2 3 4 5 R2 = 1 3 5 7 9 R = 2 5 8 11 14 2、列向量 %示例2 C = [9;1;8;2;7;3] %结果2 C = 9 1 8 2 7 3 矩阵 MATLAB的功能极其强大,其强大功能之一便是可以直接处理向量与矩阵。 %矩阵的创建 %3*3矩阵 X=[1 2 3;4 5 6;7 8 9] X = 1 2 3 4 5 6 7 8 9 %矩阵的转置 X1=X' >> X' ans = 1 4 7 2 5 8 3 6 9 %求矩阵的逆 %way1 I=[1 1 1]; I=diag(I) X2=I/X %way2 X2=inv(X) %矩阵转化为列向量 X3=X(:) >> X(:) ans = 1 4 7 2 5 8 3 6 9 来源: CSDN 作者: Yao_ch 链接: https://blog.csdn.net/weixin_43416601/article/details/104129261

matlab数组运算与数组化编程

寵の児 提交于 2020-02-01 04:27:21
matlab中的运算和操作主要是以数组为对象的, 数组又包括:数值数组、字符数组、元胞数组等。 一、数值数组的建立: 1. 直接输入法: 逗号:用来分开数组中的行元素。(可用空格代替) 分号:用来将数组中的行分开。 (可用回车键代替) 中括号[ ]:界定数组的首与尾。 a=[1,2,3,8,-1], b=[1;2;3;8;-1], A= [2,4,1;0,-2,4;2,4,6] 2.通过数组编辑器生成矩阵 步骤:先建立空矩阵a=[], 然后在工作空间(workspace)中点开a进入数组编辑器,输入元素。 3. 数据导入法: matlab可在主界面上直接导入excel文件、纯文本文件中的数据。 4.用函数创建数组 定步长生成法: x=a:t:b (t步长,省略是为1); 定数线性采样法: x=linspace(a,b,n),a与b是数组的第一个和最后一个元素,n是采样的总点数。 zeros(m): m阶全零方阵 zeros(m,n): m×n阶全零阵 eye(m): m阶单位阵 eye(m): m阶单位阵 ones(m,n): m×n阶全1方阵 rand(m): m阶在[0,1]上均匀分布随机方阵 randn(m): m阶标准正态分布随机方阵 rand(m,n), randn(m,n) 二、字符数组、元胞数组的建立: 字符数组输入法:用单引号输入字符数组,如:A=‘matlab’

Matlab学习笔记(四)——编程基础

旧街凉风 提交于 2020-01-31 10:21:49
4.1 M文件 所谓M文件就是将处理问题的各种命令融合到一个文件中,该文件以.m为扩展名,然后由MATLAB系统进行编译,得出相应的运行结果,具有相当大的可开发性和扩展性。M文件有脚本文件的函数文件两种。脚本文件不需要输入参数也不输出参数,按照文件中指定的顺序执行命令序列。而函数文件则接受其他数据作为输入参数,并且可以返回数据 4.1.1 M文件编辑器 函数定义行 用于定义函数名称,定义输入输出变量的数量、顺序。脚本式M文件没有此行 完整函数定义为 function[out1,out2,out3…]=funName(in1,in2,in3…) 其中输入变量用圆括号,变量间用英文逗号分隔。输出变量用方括号,无输出可用空括号或无括号和等号 无输出的函数定义行可为 function funName (in1,in2,in3) H1行 紧跟着函数定义行,因为它是Help文件的第一行,所以叫做H1行,用%开始 MATLAB可以通过命令把M文件上的帮助信息显示在命令窗口。因此建议写M文件时建立帮助文本 H1行是函数功能的概括性描述,在命令窗口提示符下输入命令可以显示H1行文本 help filename或者look for filename Help文本 这是为帮助建立的文本,可以是连续多行的注释文本。只能在命令窗口观看 帮助文本遇到之后的第一个非注释行结束,函数中的其他注释行不被显示 注释

MATLAB 常用函数 size()Zeros() ones() inf() ceil()等取整函数 randperm() find() sum() cumsum()

左心房为你撑大大i 提交于 2020-01-30 01:52:08
1.size():获取矩阵的行数和列数 1、s=size(A),当只有一个输出参数时,返回一个行向量,该行向量的第一个元素是矩阵的行数,第二个元素是矩阵的列数。 2、[r,c]=size(A),当有两个输出参数时,size函数将矩阵的行数返回到第一个输出变量r,将矩阵的列数返回到第二个输出变量c。 3、size(A,n)如果在size函数的输入参数中再添加一项n,并用1或2为n赋值,则 size将返回矩阵的行数或列数。其中r=size(A,1)该语句返回的时矩阵A的行数, c=size(A,2) 该语句返回的时矩阵A的列数。 ———————————————— CSDN博主「幸福在路上wellbeing」 https://blog.csdn.net/xingfuyusheng/article/details/88674860 2.Zeros用法 zeros函数——生成零矩阵 A=zeros(2,3) zeros zeros A = 0 0 0 0 0 0 B=zeros(3) B = 0 0 0 0 0 0 0 0 0 源于百度百科 3.ones ones函数——生成全1阵 4.inf inf为无穷大量+∞,-inf为无穷小量-∞ 比如1 / 0的结果就是inf 5.ceil等取整函数 ceil函数的作用是朝正无穷方向取整,即将m/n的结果向正无穷方向取整,如m/n=3.12

朝花夕拾之Matlab矩阵运算

不羁岁月 提交于 2020-01-29 15:21:44
矩阵运算 1. 加、减运算 运算符:“+”和“-”分别为加、减运算符。 运算规则:对应元素相加、减,即按线性代数中矩阵的“十”,“一”运算进行。 例1-22 >>A=[1, 1, 1; 1, 2, 3; 1, 3, 6] >>B=[8, 1, 6; 3, 5, 7; 4, 9, 2] >>A+B=A+B >>A-B=A-B 结果显示:A+B= 9 2 7 4 7 10 5 12 8 A-B= -7 0 -5 -2 -3 -4 -3 -6 4 2. 乘法 运算符:* 运算规则:按线性代数中矩阵乘法运算进行,即放在前面的矩阵的各行元素,分别与放在后面的矩阵的各列元素对应相乘并相加。 1.两个矩阵相乘 例1-23 >>X= [2 3 4 5; 1 2 2 1]; >>Y=[0 1 1; 1 1 0; 0 0 1; 1 0 0]; Z=X*Y 结果显示为: Z= 8 5 6 3 3 3 2.矩阵的数乘:数乘矩阵 上例中:a=2*X 则显示:a = 4 6 8 10 2 4 4 2 向量的点乘(内积):维数相同的两个向量的点乘。 数组乘法: A.*B表示A与B对应元素相乘。 3 .向量点积 函数 dot 格式 C = dot(A,B) %若A、B为向量,则返回向量A与B的点积,A与B长度相同;若为矩阵,则A与B有相同的维数。 C = dot(A,B,dim) %在dim维数中给出A与B的点积

matlab在信号实验中的运用二:信号的频域初探

我与影子孤独终老i 提交于 2020-01-29 03:28:56
傅里叶变换 时域和频域是反应一个信号的两个方面,时域刻画信号在某一时刻的幅值情况,而频域则表现信号的在某一种变化程度(频率)上的分量。 根据时域的离散与周期的不同傅里叶变换可以分成四种,时域或频域的离散对应着另一个域是周期的,而非周期则对应另一个域是连续的。 连续非周期:符号法 在matlab里使用syms可以定义符号变量,与矩阵变量不同,不需要我们手动对其值进行初始化,符号变量可以更好地刻画完整的函数(而不是以矩阵保留某一部分函数值),在函数形式变换、方程求解等等方面很方便。fourier函数可以对符号表达式进行傅里叶变换,并可以求出变换后的表达式, 以如下函数为例 syms t; y=sin(0.5*pi*t)/(pi*t); %2sinc(0.5t) Y=fourier(y) %进行傅里叶变换 figure(1); ezplot(y); %原函数 ylim([-0.5 1]); figure(2); ezplot(Y,[-pi,pi]); %变换后函数 原函数: 傅里叶变换以后: 门函数与sinc函数是一组傅里叶变换对,这是信号中常用的一组变换。可以看到matlab为我们计算了傅里叶变换后的函数表达式,如果Y=fourier(y) 不加‘;’结尾,可以在命令行输出该表达式: 注意: 1、ezplot函数自变量是函数表达式,只能以表达式的形式画图

朝花夕拾之Matlab矩阵表示

我的未来我决定 提交于 2020-01-28 23:24:18
1.实数值矩阵输入 MATLAB的强大功能之一体现在能直接处理向量或矩阵。当然首要任务是输入待处理的向量或矩阵。 不管是任何矩阵(向量),我们可以直接按行方式输入每个元素:同一行中的元素用逗号(,)或者用空格符来分隔,且空格个数不限;不同的行用分号(;)分隔。所有元素处于一方括号([ ])内;当矩阵是多维(三维以上),且方括号内的元素是维数较低的矩阵时,会有多重的方括号。如: >> Time = [11 12 1 2 3 4 5 6 7 8 9 10] Time = 11 12 1 2 3 4 5 6 7 8 9 10 >> X_Data = [2.32 3.43;4.37 5.98] X_Data = 2.43 3.43 4.37 5.98 >> vect_a = [1 2 3 4 5] vect_a = 1 2 3 4 5 >> Matrix_B = [1 2 3; >> 2 3 4;3 4 5] Matrix_B = 1 2 3 2 3 4 3 4 5 >> Null_M = [ ] %生成一个空矩阵 2.复数矩阵输入 复数矩阵有两种生成方式: 第一种方式 例1-1 >> a=2.7;b=13/25; >> C=[1,2*a+i*b,b*sqrt(a); sin(pi/4),a+5*b,3.5+1] C= 1.0000 5.4000 + 0.5200i 0.8544 0

MATLAB小常识3

微笑、不失礼 提交于 2020-01-28 17:38:32
14.将数据复制到工作区,并将变量命名为X 在工作区右键,新建工作变量( CTRL+N ),命名为X 将Excel中地数据 复制粘贴 进入变量 关掉变量窗口,右键X变量,另存为 .mat 文件 load 命令即可加载数据,注意代码和数据变量需放在同一目录下。 15.向量的运算 行(列)向量A与行(列)向量B对应元素的加减------> A+B / A-B ; 行(列)向量A与行(列)向量B对应元素的乘除------> A.*B / A./B ; 行(列)向量A的最大/最小值-------> max(A) / min(A) ; 行(列)向量A的每个元素与常数n加减乘除-----> A+n / A-n / A*n / A/n ; 16.abs函数   A的绝对值-----> abs(A) ; 17.zeros函数 产生n阶元素全为0的矩阵-----> zeros(n) ; 产生n行列向量-----> zeros(n,1) ; 产生n X m 阶元素全为0的矩阵------> zeros (n,m) ; 18.magic函数 产生由1至n^2构成的n阶矩阵,且每一列的和相等------> magic(n) ; 19.sort函数 对行(列)向量A进行排序-------> sort(A) ;(默认为升序,若要降序: sort(A,'descend') ) ; 对矩阵A的列向量进行排序 --