如何利用matlab创建Hilbert矩阵

如题所述

希尔伯特矩阵(Hilbert matrix)是一种数学变换矩阵,正定,且高度病态(即,任何一个元素发生一点变动,整个矩阵的值和逆矩阵都会发生巨大变化),病态程度和阶数相关。在线性代数中,希尔伯特矩阵是一种系数都是单位分数的方块矩阵。
方法/步骤
数学形式
Hilbert矩阵是一种著名的“坏条件”矩阵。该矩阵的元素的数学表达式是a(i,j)=1/(i+j-1)。下面就展示一下五阶的Hilbert矩阵的数学表示形式。

用for循环生成Hilbert矩阵
下面我们就根据数学表达式,借助for循环生成Hilbert矩阵,具体的运算代码和结果如下图所示,为了和第一步中数学表示形式的Hilbert矩阵做比较,本次计算也选择5阶。

矩阵空间预配置可提高运行速度
在对矩阵的运算中,对矩阵空间进行预配置可以提高运行速度,尤其对高阶矩阵的运算速度影响明显。我们可以通过计时函数tic和toc进行验证。tic表示计时开始,toc表示计时结束。图一为不进行矩阵空间预配置所用时间,为3.2464秒;图二是进行矩阵空间预配置时计算所用时间,为0.072233。可以很明显看出提高了运行速度。

向量化编程产生Hilbert矩阵
当我们采用向量化编程产生Hilbert矩阵时,可以大大提高运行速度,所以在平时编程时应尽量采用向量化编程,但须对matlab有较高的认知。如图所示所用时间为0.031616秒,所用时间比前两种都短。

用matlab自带函数eig计算
这里我们用matlab自带的产生Hilbert矩阵的函数hilb(n)计算一下。所用的时间为0.003173秒。可以看出所用的时间最短,所以在编程时我们应该尽量使用matlab已经有的相应功能的函数,如实在找不到在自己变。这样可以节省计算时间。

希尔伯特矩阵的逆
此外matlab还自带有求希尔伯特矩阵的逆的函数invhilb(n),其功能是求n阶的希尔伯特矩阵的逆矩阵。我们看一下,具体代码和结果如下图。有图可以看出用时还是比较短的。

END
注意事项
本经验中计算所用的时间受电脑配置、matlab版本、该程序是否首次运行等因素影响,其结果会有所变化。
温馨提示:内容为网友见解,仅供参考
无其他回答

如何利用matlab创建Hilbert矩阵
当我们采用向量化编程产生Hilbert矩阵时,可以大大提高运行速度,所以在平时编程时应尽量采用向量化编程,但须对matlab有较高的认知。如图所示所用时间为0.031616秒,所用时间比前两种都短。用matlab自带函数eig计算 这里我们用matlab自带的产生Hilbert矩阵的函数hilb(n)计算一下。所用的时间为0.003173秒。...

在matlab创建Hilbert矩阵的方法是什么?
在Matlab中可以直接使用hilb()函数得到指定的希尔矩阵。即产生每个矩阵元素的值都等于 1\/(行索引+列索引-1)的矩阵。\\x0d\\x0a此外,产生特殊矩阵方面,matlab是很强大的工具,还包括一下一些函数能够产生特殊矩阵:\\x0d\\x0a(1) 魔方矩阵魔方矩阵有一个有趣的性质,其每行、每列及两条对角线上的...

matlab怎么得到hilbert矩阵
clear;n=20; % n可取不同的值 for k=1:n H=hilb(k);lch(k)=log(cond(H));end plot(1:n,lch)title('ln(cond(H))与n之间的关系')xlabel('n')ylabel('ln(cond(H))')

跪求:用matlab编写Hilbert矩阵啊!
H=1.\/(i+j-1);toc 上面两个都是10000*100的,我这个是100*10000的

如何利用matlab创建Hilbert矩阵
H = hilb(n)返回一个 n 阶的 Hilbert 矩阵

matlab 自定义函数如何引用外部变量
下载文件:录像12.exe|function y=sys(a)global x;x=2;y=a*x;end 上述代码保存为sys.m 函数名要和文件名一致哦 详细的运行演示 见 录像12.exe

Matlab通信仿真系列——Hilbert希尔伯特变换和带通信号的低通等效_百 ...
第二部分详细阐述了如何使用Matlab绘制信号的幅度谱与解析信号的幅度谱,以及如何求解带通信号的低通等效。通过示例代码,展示了如何使用Hilbert变换函数hilbert来生成复数序列,进而获得虚部。同时,提供了绘制带通信号低通等效幅度谱和同相分量的Matlab代码示例,为实际应用提供了依据。总结而言,Hilbert希尔伯特...

希尔伯特谱、边际谱、包络谱、瞬时频率\/幅值\/相位——Hilbert分析...
边际谱建立在希尔伯特谱的基础上,通过在时间轴上对希尔伯特谱进行积分,转换为幅值-频率两者的分布关系,描述信号能量在频率轴上的分布情况。边际谱相较于傅里叶谱,更倾向于描述信号中某个频率在某一时刻出现的可能性,因此在一定程度上具有概率意义,对非平稳信号分析更加合适。瞬时频率、瞬时幅值和瞬时...

Matlab基础 学习笔记2-矩阵
此外,还有一些具有特定性质的矩阵,如魔方矩阵(magic(n)),Vandermonde矩阵(vander(V)),Hilbert矩阵(hilb(n)),伴随矩阵(compan(p)),帕斯卡矩阵(pascal(n))等。对于矩阵变换,Matlab支持对角化操作,如diag(A)提取对角线元素,triu(A)和tril(A)分别提取主对角线及上下两侧的元素,以及旋转和翻转...

Matlab通信仿真系列——Hilbert希尔伯特变换和带通信号的低通等效_百 ...
在Matlab中,可以使用hilbert函数绘制信号及其幅度谱,并演示解析信号的幅度谱。带通信号的低通表示带通信号的低通表示是通过将其分解为同相分量和正交分量来实现的,即xc(t)和xs(t)。低通等效信号xl(t)即为实信号的复包络,可以用信号包络a(t)和相位θ(t)来表示。Matlab示例展示了如何对不同载波...

相似回答