matlab 中的数据维数过大的时候怎么处理及技巧

在matlab中, 当数据比较大时,运算起来就困难了,有时候还会out of memory(例如4000*4000的矩阵,要算矩阵乘法都比较吃力)。此文会记录我学到的一些解决办法:

1. 将数据的存储类型从double转换成single

    在matlab中double数据类型占8个字节,single类型占4个字节。把数据类型从double类型转换成single类型可以节省一半的空间。

    单精度浮点数single的取值范围可以通过[-realmax(‘single’), -realmin(‘single’)] U [ realmin(‘single’), realmax(‘single’)]查看,可以发现其范围一般是足够我们使用了。

2. 避免使用高维矩阵

     当数据量很大时,使用高维矩阵无疑是雪上加霜,可以考虑使用多个低维矩阵。

     例如有3个N*N的矩阵(K1,K2,K3),为了程序书写的方便,可以把这三个矩阵保存在一个N*N*3的矩阵K中,那么使用这三个矩阵时就只通过K来访问。但是,当N比较大时,三维矩阵K就更大了,很容易造成out of memory。 所以为了避免out of memory,还是使用多个二维矩阵比较好(与其分配一个更大的空间给K,不如分配多个小矩阵,虽然总量一样),可是这样取用这三个矩阵却不方便了。下面给出我的解决方案:

      N = 5000;

      K1 = rand(N,N);

      K2 = rand(N,N);

      K3 = rand(N,N);

      a = [‘K1’; ‘K2’; ‘K3’];     % 将这三个矩阵的名字存成字符串矩阵

      B1=eval(a(1,:));          % 通过eval()函数来取用K1

      B2=eval(a(2,:));          % 取用K2

      B3=eval(a(3,:));          % 取用K3

      这里用到的eval函数的功能强大,可以将字符串的内容当做matlab命令来执行(Execute string containing MATLAB expression)

3. 及时清理不用变量,特别是大数据矩阵。及时清理可以腾出空间。同时,在生成矩阵的时候最好一次性申请足够的空间,不要在程序运行的时候变化矩阵大小。

4. 如有可能,尽量采用矩阵元素之间的运算,而不是直接的矩阵乘法

转自:http://blog.csdn.net/heathyhuhu/article/details/9352881
  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matlab是一种强大的数学建模与数据处理软件,它提供了丰富的工具和功能来处理维数据。三维数据是指具有三个维度的数据集,例如空间的三维坐标数据或时间序列数据Matlab的三维数处理算法包括以下几个方面: 1. 数据可视化:Matlab提供了多种方法来可视化三维数据,例如使用plot3函数可以在三维坐标绘制曲线、scatter3函数可以绘制散点图、surf函数可以绘制三维表面图等。通过可视化,可以直观地观察数据的分布和趋势。 2. 数据拟合与插值:对于三维数据集,可以使用Matlab的fit函数拟合出适当的函数模型。拟合可以用来预测数据的趋势和未来发展。对于离散数据点,Matlab还提供了插值函数(例如interp3函数)来填充数据之间的空隙,使得数据更加连续。 3. 数据处理与统计分析:Matlab提供了许多处理和分析三维数据的函数和工具,如三维数据的均值、方差、标准差的计算(如mean、std函数),还有协方差、相关系数等统计量的计算函数。这些函数可以帮助我们了解数据的分布和特性。 4. 三维数据的滤波与降噪:在实际应用,三维数据可能受到噪声的影响,影响数据的可靠性和准确性。Matlab的滤波函数(如medfilt3、imgaussfilt3)可以帮助我们去除或减小数据的噪声,以提高数据的质量。 总的来说,Matlab的三维数处理算法包括数据可视化、数据拟合与插值、数据处理与统计分析、数据滤波与降噪等方面。通过这些算法,我们可以更好地理解和分析三维数据,从获取有用的信息和结论。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值