为什么使用余弦函数计算比使用正割触发函数快得多? 有没有办法加快割线功能?
使用余弦和割线三角函数计算时,所需的时间差异很大。
Cosine = finally Done-elapsed time -36.7544sec- or -0.6126mins- or -0.0102hours-
Secant = finally Done-elapsed time -43.2231sec- or -0.7204mins- or -0.0120hours-
我用来测试的代码如下。我只是在割线或余弦线上测试我想要的速度。
clear all, clc,tic
num_of_values=60000; %number of values to use
a1_dataset =linspace(0,10000,num_of_values)';%
a1_idx = randi (numel (a1_dataset), num_of_values, 1);
a1=a1_dataset (a1_idx);
a2_dataset =linspace(0,.8,num_of_values)';%
a2_idx = randi (numel (a2_dataset), num_of_values, 1);
a2=a2_dataset (a2_idx);
a3_dataset =linspace(-360,360,num_of_values)';%
a3_idx = randi (numel (a3_dataset), num_of_values, 1);
a3=a3_dataset (a3_idx);
array1=[a1,a2,a3];
t_rebuilt=linspace(0,16000,16000);
sig_comb=zeros(1,length(t_rebuilt));
for rr=1:1:length(array1)
sig_comb=sig_comb+array1(rr,2)*cos (((array1(rr,1))*t_rebuilt)+array1(rr, 3)); %test using cosine
%sig_comb=sig_comb+array1(rr,2)*sec (((array1(rr,1))*t_rebuilt)+array1(rr, 3)); %test using secant
end
fprintf('\nfinally Done-elapsed time -%4.4fsec- or -%4.4fmins- or -%4.4fhours-\n',toc,toc/60,toc/3600);
PS:我使用Octave 3.8.1 Linux
答案 0 :(得分:3)
Octave没有sec
的原生实现,它使用cos
来执行此操作。查看edit sec.m
了解详情。
差异是由
引起的nargin
sec
的函数调用
sec
要摆脱前两个因素,请使用1./cos(x)
代替sec(x)
。要获得完全相同的速度,需要sec
的本机实现。