|
ms
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Math functions in VB (or even a dll somewhere) OptionsI'll post it somewhere else. I've been doing data imports into MS Excel (ver 2007) and using the CORREL function. What I was wondering was is there anything like this in Visual Basic or C#? Or even a DLL? I've got VS2008 and I really don't want to code the CORREL function by hand if I can just pass off 2 or more array's to a function that already exists. I've googled and went through the MSDN library and didn't find anything. Maybe I'm searching wrong, I don't know. Any help would be greatly appreciated. TIA! Hi,
If you are using C# this is the correct group. First of all you should try to explain what Correl does. Make it easy to the person trying to help you ;) Show quote "Nondisclosure007" <nondisclosure***@gmail.com> wrote in message news:cd546ff0-bac1-4429-9a66-537d13d873f1@g30g2000hsb.googlegroups.com... > Hello. If this is the wrong group for this, please let me know. > I'll > post it somewhere else. > > I've been doing data imports into MS Excel (ver 2007) and using the > CORREL function. What I was wondering was is there anything like > this > in Visual Basic or C#? Or even a DLL? I've got VS2008 and I really > don't want to code the CORREL function by hand if I can just pass off > 2 or more array's to a function that already exists. > > > I've googled and went through the MSDN library and didn't find > anything. Maybe I'm searching wrong, I don't know. Any help would > be > greatly appreciated. > > > TIA! Correlation Coefficient (C#):
public double GetCorrelation(double[] num1, double[] num2) { double denominator = (num1.Length - 1) * GetStandardDeviation(num1) * GetStandardDeviation(num2); double sumxy = 0; for (int i=0; i<num1.Length; i++) { sumxy += num1[i] * num2[i]; } double numerator = sumxy - num1.Length * GetAvg(num1) * GetAvg(num2); return numerator / denominator; } public static double GetStandardDeviation(ArrayList num) { double SumOfSqrs = 0; double avg = GetAvg(num); for (int i=0; i<num.Count; i++) { SumOfSqrs += Math.Pow(((double)num[i] - avg), 2); } double n = (double)num.Count; return Math.Sqrt(SumOfSqrs/(n-1)); } public static double GetStandardDeviation(double[] num) { double Sum = 0.0, SumOfSqrs = 0.0; for (int i=0; i<num.Length; i++) { Sum += num[i]; SumOfSqrs += Math.Pow(num[i], 2); } double topSum = (num.Length * SumOfSqrs) - (Math.Pow(Sum, 2)); double n = (double)num.Length; return Math.Sqrt( topSum / (n * (n-1)) ); } public static double GetStandardDeviation(double[,] num, int col) { double Sum = 0.0, SumOfSqrs = 0.0; int len = num.GetLength(0); for (int i=0; i<len; i++) { Sum += num[i,col]; SumOfSqrs += Math.Pow(num[i,col], 2); } double topSum = (len * SumOfSqrs) - (Math.Pow(Sum, 2)); double n = System.Convert.ToDouble(len); return Math.Sqrt( topSum / (n * (n-1)) ); } public double GetAvg(double[] num) { double sum = 0.0; for (int i=0; i<num.Length; i++) { sum += num[i]; } double avg = sum / System.Convert.ToDouble(num.Length); return avg; } public double GetAvg(int[] num) { double sum = 0.0; for (int i=0; i<num.Length; i++) { sum += num[i]; } double avg = sum / System.Convert.ToDouble(num.Length); return avg; } public double GetAvg(ArrayList num) { double sum = 0.0; for (int i=0; i<num.Count; i++) { sum += (double)num[i]; } double avg = sum / System.Convert.ToDouble(num.Count); return avg; } -- Have fun! --Peter "Inside every large program, there is a small program trying to get out." http://www.eggheadcafe.com http://petesbloggerama.blogspot.com http://www.blogmetafinder.com Show quote "Nondisclosure007" wrote: > Hello. If this is the wrong group for this, please let me know. > I'll > post it somewhere else. > > I've been doing data imports into MS Excel (ver 2007) and using the > CORREL function. What I was wondering was is there anything like > this > in Visual Basic or C#? Or even a DLL? I've got VS2008 and I really > don't want to code the CORREL function by hand if I can just pass off > 2 or more array's to a function that already exists. > > > I've googled and went through the MSDN library and didn't find > anything. Maybe I'm searching wrong, I don't know. Any help would > be > greatly appreciated. > > > TIA! > Not that I know, for those who want more information, I have searched for it
on the microsoft website. http://office.microsoft.com/en-gb/excel/HP052090231033.aspx Cor |
|||||||||||||||||||||||