matlab降重怎么降低

matlab降重怎么降低

1.matlab降低计算精度

我做遥感图像处理,图像太大了,我想通过降低matlab的计算精度从而实现快速计算,有什么方法可行呢?想到两种方法1.matlab默认计算精度为32位,我把所有数据都改为单精度型,那么他的计算精度应该为16位了吗?结果是单精度数据吗?2.是否有什么方法直接定义matlab的计算精度?我是说通过某种方法只运算n位数字,而不是显示n位请高手指点!

  • 你先导入数据后把原始数据用single()转成单精度。然后继续计算就是单精度了

    a=rand(4)

    a =

    0.4218 0.6557 0.6787 0.6555

    0.9157 0.0357 0.7577 0.1712

    0.7922 0.8491 0.7431 0.7060

    0.9595 0.9340 0.3922 0.0318

    >> b=single(a)

    b =

    0.4218 0.6557 0.6787 0.6555

    0.9157 0.0357 0.7577 0.1712

    0.7922 0.8491 0.7431 0.7060

    0.9595 0.9340 0.3922 0.0318

    c=b+0.4;

    d=b+b;

    e=b+single(3.4)

    >> whos

    Name Size Bytes Class Attributes

    a 4x4 128 double

    b 4x4 64 single

    c 4x4 128 double

    d 4x4 64 single

    e 4x4 64 single

    转了以后可以用

    clear a;

    把a从内存里面抹去。

2.matlab怎样降低交错级数的求和误差?

该交错级数为幂级数且收敛,该级数的绝对值递减上句应该是“该级数系数的绝对值递减”

  • 你把该级数的表达式写出来看看,才能有针对性的写程序,加以改进。

3.MATLAB中 如何使用resample函数 降低采样率

补充资料现在有一个txt文件中的一维数组X,X中有大约4千个点,采样率为250hz,如何将它降到90hzB=resample(X,25,9)还是 B=resample(X,9,25)?大侠具体解释下这个函数

  • resample是抽取decimate和插值interp的两个结合

    具体完成如下操作,

    先插值9变成 250*9Hz

    然后抽取25 变成速率 90Hz

  • resample为信号降采样处理,理解如下:

    B=resample(x,90,250); %

    采样从250Hz降到90Hz,如果250在前,就是插值从90到250,可以看B的长度,250Hz采样4000个数据等于90hz采样1440个数据,这就是降采样。

    resample是抽取decimate和插值interp的两个结合

    具体完成如下操作,

    先插值90变成 250*9Hz

    然后抽取250变成速率 90Hz

4.用matlab算卷积的时候运算量太大了,有什么好方法降低运算量

  • 你想想啊时域卷积就相当于频域相乘,所以可以变换到频域去做然后再变换回时域

  • function

    c

    =

    conv_new(a,

    b)

    na

    =

    length(a);

    nb

    =

    length(b);

    if

    na

    ~=

    numel(a)

    ||

    nb

    ~=

    numel(b)

    error('matlab:conv:aorbnotvector',

    'a

    and

    b

    must

    be

    vectors.');

    end

    if

    na

    >

    nb

    if

    nb

    >

    1

    a(na+nb-1)

    =

    0;

    end

    c

    =

    filter(b,

    1,

    a);

    else

    if

    na

    >

    1

    b(na+nb-1)

    =

    0;

    end

    c

    =

    filter(a,

    1,

    b);

    end

5.以下matlab代码如何降低程序运行时间

gg1=zeros(3849,3849);for i=1:3849 for j=2:1:223 for k=1:3849cm=cell2mat(textdata(i,j)); f = findstr([num2str(data(k,1)) ' '], cm); if ismember(1,f)n=length(cm);index=find(cm==':');gg1(i,data(k,1))=str2double(cm((index+2):n));endendendend说明:textdata是一个装有文本的cell矩阵,第一列都是空;data是一个double的列向量;目的是想把一个链接表形式的图结构转换成0-1那种的。CPU及内存使用都不多,就是数据大,时间长,运行起来太慢了,没那个条件等~跪求提高时间效率的好方法啊~

  • cm=cell2mat(textdata(i,j))与k无关,可以放到k循环之外,不过对速度提升有限。。

  • 你这个问题貌似无法向量化,在matlab里基本上是很难提高速度了~

标签:;  ;  ;  

matlab降重怎么降低
下载Doc文档

猜你喜欢