
matlab使用
文章平均质量分 66
jbb0523
彬彬有礼
展开
-
如何记录Matlab程序运行过程中所占用的最大内存(续)
在Matlab中,一个浮点类型数据是占8个字节,因此程序中的X1和X2各占3200000000个字节。可以看到,profile记录的峰值内存是2.986GB,这很明显是有问题的,因为程序中有两个20000*20000的矩阵,这就接近4GB了。而三次使用memory记录的内存使用显示,占用的内存最多时有7.5292GB,这也是一个合理的数字。程序中我还看了分配的内存(TotalMemAllocated字段),显示是TotalMem = 5.9718GB,这个虽然低于memory记录的结果,但也是比较合理的。原创 2025-03-18 14:20:14 · 417 阅读 · 1 评论 -
如何记录Matlab程序运行过程中所占用的最大内存
是得到当前文件的名字(含目录和文件名,但不包含扩展名.m,因此要手动接上),在FunctionTable中字段FileName存储的各函数文件的名字(包含扩展名.m),因此我们用了一个for循环查找主程序的运行信息位于结构体数组FunctionTable中的位置。但如果我们想要的是整个程序在运行过程中占用内存的最大值,即峰值内存,而且我们的程序又包含了很多子函数,再使用上述命令就有些不方便了。总不能运行完一个程序记录一下吧!可以看到,各文件的运行总时间,自用时间(不包含调用子函数的时间),峰值内存等信息。原创 2025-03-16 20:54:25 · 436 阅读 · 0 评论 -
Matlab中的均值函数mean
我在更新簇中心时,有些簇只有一个样本,也就是一个行向量,这样用mean对它求均值,得到的不是它本身(程序本身所期望的结果),而是将这个行向量所有元素取平均,然后将这个标量值赋值给簇中心向量时,Matlab自动会将簇中心向量所有元素都赋值为这个平均值。解决的办法也很简单,就是在更新簇中心时,判断一下属于当前簇的样本个数,如果大于1,每行一个样本,存成一个矩阵,直接对这个矩阵使用mean就行,反之若等于1,则直接将这个向量赋值给簇中心,不要使用mean。但很奇怪的是,聚类的结果迭代少量几次后就不再发生变化了。原创 2025-03-05 16:25:34 · 369 阅读 · 0 评论 -
使用libsvm时遇到MATLAB has encountered an internal problem and needs to close
最后是复现出错的场景,“idx = (y==0)”是为了产生一个空集,然后基于它从生成的训练集中选样本,肯定选出来的X_s和y_s也是空集,然后再使用libsvm基于X_s和y_s进行训练,这里也是不报错的,最后一行是使用训练所得模型做预测,然后就会产生本文开头所说的error。本错误与libsvm版本无关,错误是在我一直用的libsvm上发现的(记不清是哪个版本了),我使用最新版的libsvm (Version 3.34, August 2024)进行了测试,也会出现一样的错误。原创 2024-08-25 09:52:36 · 576 阅读 · 0 评论 -
矩阵按列相乘运算的并行化实现方法
也就是说,矩阵Z中的第(r,s)个元素等于X的第r行之和乘以Y的第s行之和。因此,可以先分别将X和Y所有列对应相加,得到长为d的列向量Xsum和Ysum,则Z等于Xsum乘以Ysum的转置。注意到第一个括号是将X所有列对应相加,第二个括号是将Y所有列对应相加,因此Z也就是前面提到的Xsum乘以Ysum的转置。其中X(:,i), Y(:,j)分别表示矩阵X, Y的第i列和第j列,易知Z为d×h矩阵。注意到第一个括号是X的第r行之和,第二个括号是Y的第s行之和。这两天一直在琢磨如下矩阵计算问题。原创 2024-04-24 10:17:53 · 803 阅读 · 0 评论 -
MATLAB中的矩阵乘法与实际矩阵乘法的差异
今天在做算法实现时,想用将算法矩阵化,这样子可以并行运算,虽然更耗内存,但起码效率会更好。为了验证矩阵化过程是否正确,我将矩阵化后所得结果和原来的串行计算结果相减,看看两者的之差的范数是否等于0。但我发现两者一直有个微小的差异,本着刨根问底的精神,于是仔细探究了一下,发现差异出现在其中的矩阵乘法,也就是说MATLAB里两个矩阵相乘与实际矩阵相乘的过程有差异。原创 2022-11-16 11:13:23 · 1595 阅读 · 0 评论 -
Matlab中随机数生成控制
题目:Matlab中随机数生成控制 这里不讨论各随机数生成函数的使用方法(例如rand, randn, randi, randperm等),重点讨论如何重复生成一样的随机数,因为很多算法中存在随机数生成环节,每次运行程序的结果都不一样,那么自然地就希望能够控制随机数的生成过程,以保证结果能够复现。 以两个程序说明。首先运行如下程序:%demo_randomseed1.mclc;clear;close all;%在程序开始前记录当前随机数生成器状态scurr =...原创 2021-11-24 13:30:38 · 3080 阅读 · 0 评论 -
Matlab内置的柱状图函数bar使用方法
标题:Matlab内置的柱状图函数bar使用方法 在2019年9月发布的《在Matlab中使用barweb绘制带方差的分组柱状图时的几个注意事项》中介绍了由第三方编写的barweb函数使用方法,但有时其实并不需要画带方差的分组柱状图,很多时候只需要使用Matlab内置的柱状图函数bar即可。本篇简单介绍一下bar函数的使用方法,其实主要是介绍一下如何设置横/纵坐标以及柱状图的颜色图等。 首先,看以下关于bar的demo使用程序:%demo_bar.m@2021-11...原创 2021-11-21 12:28:30 · 9540 阅读 · 0 评论 -
在Matlab中构建最大带权生成树
题目:在Matlab中构建最大带权生成树学过数据结构的都知道“最小生成树” (Minimum Spanning Tree),可以使用Prim和Kruskal算法找到完全图的最小生成树。但在有些时候还需要找最大带权生成树 (Maximum Weighted Spanning Tree),例如在西瓜书(即 周志华.机器学习.北京:清华大学出版社, 2016.)中的第7.4节半朴素贝叶斯分类器提到的TAN(Tree Augmented naive Bayes)算法则基于最大带权生成树算法:提到最大..原创 2020-11-02 19:35:15 · 3311 阅读 · 2 评论 -
运气太好了!MATLAB计算出来的结果是错的这种事情都遇上了
标题:运气太好了!MATLAB计算出来的结果是错的这种事情都遇上了最近求解一个优化问题,由于存在x’Hx,需要矩阵H为(半)正定矩阵才能保证x’Hx对向量x是凸函数。矩阵H是由一个方阵与其自身转置相乘得到的,即H=AA’,以前遇到的矩阵H都是半正定的,但现在有个数据集(记为D)的结果显示算法不收敛,检查之后发现其原因是针对该数据集D,矩阵H不是半正定的。呃,这就麻烦了,因为暂时还没能力从数学上证明矩阵H什么时候是半正定的、什么时候不是半正定的,只是以前从未遇到过矩阵H不是半正定的情况,所以就默认它是半正原创 2020-05-25 11:43:59 · 4952 阅读 · 4 评论 -
在Matlab中使用barweb绘制带方差的分组柱状图时的几个注意事项
题目:在Matlab中使用barweb绘制带方差的分组柱状图时的几个注意事项 注:本人电脑上安装有Matlab r2009b, r2014a, r2017b三个Matlab版本,其中r2009b, r2014a对应文中提到的Matlab低版本,r2017b对应文中提到的Matlab高版本;程序在本人电脑上的测试通过,不同Matlab可能会出现新的问题。 Matl...原创 2019-09-07 10:04:28 · 7293 阅读 · 7 评论 -
Matlab的concur、repmat、kron、reshape函数介绍
也算是经常用到Matlab的concur、repmat、kron、reshape这四个函数吧,但总也记不住其具体用法,每次使用前都要琢磨一下,因此决定将其基本使用方法汇总起来记录一下,故有此文。1、concur 有时需要将某个列向量变成一个每列均相同的矩阵,这里就可以使用concur。 Command Window中help信息如下:...原创 2019-06-18 16:23:29 · 5646 阅读 · 0 评论 -
利用Matlab将图片转换成素描(简笔画)风格
题目: 利用Matlab将图片转换成素描(简笔画)风格 记得曾经看过别人的网络头像,是那种类似简笔画或素描的图片,一直以来都想做一个类似的头像,但始终不得要领。今天当我看到文献[1]中的图5.28时(第151-152页),我感觉那种效果类似于我想要的,于是就看了一下,写了一段程序,主要是用了文献[1]中的colorgrad函数。如果要想看懂这段程序还是得有一定的数字图像处理基础。原创 2015-05-07 19:26:57 · 23221 阅读 · 5 评论 -
fuck the function “reshape” in matlab
题目:fuck the function “reshape” in matlab=====================引言=======================耗费了我一晚上的时间,原创 2014-11-02 22:59:16 · 2490 阅读 · 0 评论 -
Matlab中如何修改字体的大小?
题目:Matlab中如何修改字体的大小?使用Matlab有好几年了,一直以为command原创 2014-10-22 18:36:12 · 43429 阅读 · 0 评论 -
有关在matlab中对信号采样及频谱的一些解释;复数的频谱,高分辨率谱,高密度谱的一些理解
使用matlab进行频谱分析时若干问题解释作者:jbb0523(彬彬有礼)本文共说明了以下问题:一、在matlab中如何表示频率为f1,以采样率f抽样后所得到的数字信号?如此表示的依据是什么?二、使用matlab画出的频谱(一般是幅度谱或称振幅谱)的横坐标轴的意义是什么?如何根据横坐标轴的值得到其所对应的实际频率?三、实数序列的频谱除第零个点和第N/2个(当N为偶数时)点外(从原创 2012-02-22 16:26:00 · 49709 阅读 · 9 评论 -
Matlab中滤波器的设计(FDAT)
在matlab中有一个滤波器设计和分析工具FDAT,可以通过此工具来对滤波器进行设计。matlab中一些简单的命令:round(x)把x舍入到最近的整数(四舍五入) abs(x)计算x的绝对值转载 2011-09-16 17:30:07 · 18506 阅读 · 3 评论