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里基本上是很难提高速度了~