This is the slow LabTalk method...
get col(A) -e NN; // find number of rows
loop (ii,1,NN) {
col(B)[ii]=0;
loop (jj,1,NN) {
kk=abs(ii-jj);
col(B)[ii]+=exp(kk/X);
};
};
This is much faster...
get col(A) -e NN; // find number of rows
temp=data(1,NN); // create a temporary dataset
loop (ii,1,NN) {
temp=col(A);
temp-=ii;
temp=abs(temp);
temp/=X;
temp=exp(temp);
sum(temp);
col(B)[ii]=sum.total;
};
del temp;
It's even faster using the second method in an Origin C function...
void MyFunc(double dX)
{
Worksheet wks = Project.ActiveLayer();
Dataset dA(wks,0);
Dataset dB(wks,1);
int NN = dA.GetSize();
Dataset dTemp;
dTemp.Create(NN);
BasicStats bStat;
for(int i=0; i<NN; i++)
{
dTemp = dA;
dTemp -= (i+1);
dTemp = abs(dTemp);
dTemp /= dX;
dTemp = exp(dTemp);
Data_sum(&dTemp, &bStat);
dB[i] = bStat.total;
}
}
Mike Buess
Origin WebRing Member