Show Posts

Pages: [1] 2 3 ... 8

4

Products / Arduino Due / Has anyone tried the brain connectivity toolbox in c++ in a arduino due?

on: July 24, 2013, 12:08:15 am

I have read some articles about connectomes and seen a ted talk on it. Connectonomics and pigons and other aireas like visual cortex's are mapped acording to science journal articles. So aparently the structures are done in the brain connectivity toolkit now could it work for octave? if It didn't have proprietary graphics. Could it be useful in a arduino due? Well I decided to ask the forum. Has anyone tried the brain connectivity toolbox in c++ in a arduino due?



6

Products / Arduino Due / Re: Octave/Matlab Vector Programming in Due

on: February 28, 2013, 11:19:33 am

Binary sketch size: 183,028 bytes (of a 524,288 byte maximum)  34% used So the LDA eample that has slightly different number results but did one calculation correctly i would have to try it with some of the sample data or octave or r example data to see if it continues to work. Well I got the code to compile for a pc and compile for the arduino due. Now the pc I tested it will this run on the arduino due? Sorry about the mess. //Josh W //lda example reference http://people.revoledu.com/kardi/tutorial/LDA/Numerical%20Example.html //reference http://eigen.tuxfamily.org/dox/TutorialMatrixArithmetic.html // Example By: RandomVibe // Eigen Doc: http://eigen.tuxfamily.org/dox/ // Quick Reference: http://eigen.tuxfamily.org/dox/QuickRefPage.html
#include <iostream> #include <math.h> #include <Eigen312.h> // Calls main Eigen3.1.2 matrix class library #include <Dense> #include <LU> // Calls inverse, determinant, LU decomp., etc. using namespace Eigen; // Eigen related statement; simplifies syntax for declaration of matrices using Eigen::MatrixXd; using namespace std;
void print_mtxf(const Eigen::MatrixXf& K);
void setup() {
Serial.begin(9600); // DECLARE MATRICES // //data matrix x row col MatrixXd x(4,2); //cur x(0,0) = 2.95;//g0 x(1,0) = 2.53; x(2,0) = 3.57; x(3,0) = 3.16;
//dia x(0,1) = 6.63;//g0 x(1,1) = 7.79; x(2,1) = 5.65; x(3,1) = 5.47;
MatrixXd x1(3,2);
x1(0,0) = 2.58;//g1 x1(1,0) = 2.16; x1(2,0) = 3.27;
x1(0,1) = 4.46;//g1 x1(1,1) = 6.22; x1(2,1) = 3.52;
MatrixXd ui(1,2);//group/feature
ui(0,0)=(x(0,0) + x(1,0) + x(2,0) + x(3,0))/4.0; ui(0,1)=(x(0,1) + x(1,1) + x(2,1) + x(3,1))/4.0;
//transpose ui to uit MatrixXd uit(1,2);//group/feature uit=ui.transpose();
MatrixXd ui1(1,2);//group/feature
ui1(0,0)=(x1(0,0) + x1(1,0) + x1(2,0))/3.0; ui1(0,1)=(x1(0,1) + x1(1,1) + x1(2,1))/3.0;
MatrixXd ui1t(1,2);//group/feature ui1t=ui1.transpose();
MatrixXd u(1,2);//all group/feature u(0,0)=(x(0,0) + x(1,0) + x(2,0) + x(3,0) + x1(0,0) + x1(1,0) + x1(2,0))/7.0;
u(0,1)=(x(0,1) + x(1,1) + x(2,1) + x(3,1) + x1(0,1) + x1(1,1) + x1(2,1))/7.0;
MatrixXd ximinu(4,2); //cur ximinu(0,0) = x(0,0)  u(0,0);//f0 ximinu(1,0) = x(1,0)  u(0,0); ximinu(2,0) = x(2,0)  u(0,0); ximinu(3,0) = x(3,0)  u(0,0); //dia ximinu(0,1) = x(0,1)  u(0,1);//f1 ximinu(1,1) = x(1,1)  u(0,1); ximinu(2,1) = x(2,1)  u(0,1); ximinu(3,1) = x(3,1)  u(0,1); std::cout << ximinu << std::endl; cout << "" << endl;
MatrixXd ximinu1(3,2); //cur ximinu1(0,0) = x1(0,0)  u(0,0); ximinu1(1,0) = x1(1,0)  u(0,0); ximinu1(2,0) = x1(2,0)  u(0,0); //dia ximinu1(0,1) = x1(0,1)  u(0,1);//g1 ximinu1(1,1) = x1(1,1)  u(0,1); ximinu1(2,1) = x1(2,1)  u(0,1);
MatrixXd ximinut(4,2); ximinut= ximinu.transpose();
MatrixXd ximinu1t(3,2); ximinu1t= ximinu1.transpose();
MatrixXd ci(2,2); ci = ( ximinut * ximinu ) /4.0;
MatrixXd ci1(2,2); ci1 = ( ximinu1t * ximinu1 ) /3.0;
MatrixXd c(2,2); c(0,0) = 4.0/7.0 * ci(0,0) + 3.0/7.0 * ci1(0,0); c(1,0) = 4.0/7.0 * ci(1,0) + 3.0/7.0 * ci1(1,0); c(0,1) = 4.0/7.0 * ci(0,1) + 3.0/7.0 * ci1(0,1); c(1,1) = 4.0/7.0 * ci(1,1) + 3.0/7.0 * ci1(1,1);
MatrixXd cinverse(2,2); cinverse=c.inverse(); MatrixXd xk(1,2);//new data xk(0,0) = 2.81;//f1 xk(0,1) = 5.46;
MatrixXd xkt(1,2);//new data xkt=xk.transpose();
MatrixXd lnp1(1,1);//p1 4/7 lnp1(0,0) = 0.0; lnp1(0,0)=log(4.0/7.0);
MatrixXd lnp2(1,1);//p1 3/7 lnp2(0,0) = 0.0; lnp2(0,0)=log(4.0/7.0);
MatrixXd f1(1,1);//ui * cinverse * xkt 1.0/2.0 * ui * cinverse * uit + lnp1 MatrixXd f2(1,1);//ui1 * cinverse * xkt 1.0/2.0 * ui1 * cinverse * ui1t + lnp2
f1 = ui * cinverse * xkt 1.0/2.0 * ui * cinverse * uit + lnp1; f2 = ui1 * cinverse * xkt 1.0/2.0 * ui1 * cinverse * ui1t + lnp2; if (f1(0,0)>f2(0,0)) cout << "the data is in group 1" << endl; if (f1(0,0)<f2(0,0)) cout << "the data is in group 2" << endl; // Print Result // //print_mtxf(K); // Print Matrix Result (passed by reference) }
void loop() { // put your main code here, to run repeatedly: }
// PRINT MATRIX (float type) // void print_mtxf(const Eigen::MatrixXf& X) { int i, j, nrow, ncol; nrow = X.rows(); ncol = X.cols();
Serial.print("nrow: "); Serial.println(nrow); Serial.print("ncol: "); Serial.println(ncol); Serial.println(); for (i=0; i<nrow; i++) { for (j=0; j<ncol; j++) { Serial.print(X(i,j), 6); // print 6 decimal places Serial.print(", "); } Serial.println(); } Serial.println(); }



8

Products / Arduino Due / Re: Octave/Matlab Vector Programming in Due

on: February 27, 2013, 11:59:18 am

Thanks I downloaded Arduino 1.5 ... I put the eigen subdirectory into arduino hardware sam libraries then the eigen.h file in there. That is in the adafruit post.
Now I am getting errors with namespace... using namespace Eigen; // Eigen related statement; simplifies syntax for declaration of matrices The print out option of the matrix tipe I am not shure how that works.
I useualy use standard c and arduino c.



9

Products / Arduino Due / Is their a way in the data sheet or some way to add more program memory to due.

on: February 27, 2013, 10:17:52 am

I wanted to program the arduino due to do some linear algebra operations. Linear Discriminant Analysis. The code blocks c++ release code is over 520k already So I wonder is their ways to compile the program smaller and will it be smaller put into the arduino due as shown in the forums? It is on my pc now. What are ways to add more program memory???



10

Products / Arduino Due / Re: Arduino Due libraries (official and 3rd party)

on: February 27, 2013, 08:44:08 am

I am using the Eigen library and want to run it in the arduino due I have posted some of my codeblocks c++ code for my windows machine. Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms. http://eigen.tuxfamily.org/index.php?title=Main_Page#include <iostream> #include <Eigen/Dense> #include <Eigen/LU> using Eigen::MatrixXd; using namespace std; int main() { cout << "Hello Pattern matching Linear Discriminent Analisis!" << endl; cout << "" << endl; cout << "x data" << endl;
//data matrix x row col MatrixXd x(4,2); //cur x(0,0) = 2.95;//g0 x(1,0) = 2.53; x(2,0) = 3.57; x(3,0) = 3.16;
//dia x(0,1) = 6.63;//g0 x(1,1) = 7.79; x(2,1) = 5.65; x(3,1) = 5.47;
std::cout << x << std::endl; cout << "End of x data" << endl; cout << "" << endl;
cout << "x1 data" << endl;
MatrixXd x1(3,2);
x1(0,0) = 2.58;//g1 x1(1,0) = 2.16; x1(2,0) = 3.27;
x1(0,1) = 4.46;//g1 x1(1,1) = 6.22; x1(2,1) = 3.52;
std::cout << x1 << std::endl; cout << "End of x1 data" << endl; cout << "" << endl;
//group adv cout << "x data adverage ui" << endl;
MatrixXd ui(1,2);//group/feature ui(0,0)=(x(0,0) + x(1,0) + x(2,0) + x(3,0))/4; ui(0,1)=(x(0,1) + x(1,1) + x(2,1) + x(3,1))/4; std::cout << ui << std::endl; cout << "" << endl;
cout << "x1 data adverage ui1" << endl;
MatrixXd ui1(1,2);//group/feature
ui1(0,0)=(x1(0,0) + x1(1,0) + x1(2,0))/3.0; ui1(0,1)=(x1(0,1) + x1(1,1) + x1(2,1))/3.0; std::cout << ui1 << std::endl; cout << "" << endl;
cout << "x & x1 data adverage u" << endl; MatrixXd u(1,2);//all group/feature u(0,0)=(x(0,0) + x(1,0) + x(2,0) + x(3,0) + x1(0,0) + x1(1,0) + x1(2,0))/7.0;
u(0,1)=(x(0,1) + x(1,1) + x(2,1) + x(3,1) + x1(0,1) + x1(1,1) + x1(2,1))/7.0;
std::cout << u << std::endl; cout << "" << endl;
cout << "mean corrected data xig  u" << endl; MatrixXd ximinu(4,2); //cur ximinu(0,0) = x(0,0)  u(0,0);//f0 ximinu(1,0) = x(1,0)  u(0,0); ximinu(2,0) = x(2,0)  u(0,0); ximinu(3,0) = x(3,0)  u(0,0); //dia ximinu(0,1) = x(0,1)  u(0,1);//f1 ximinu(1,1) = x(1,1)  u(0,1); ximinu(2,1) = x(2,1)  u(0,1); ximinu(3,1) = x(3,1)  u(0,1); std::cout << ximinu << std::endl; cout << "" << endl;
cout << "mean corrected data xi1  u" << endl;
MatrixXd ximinu1(3,2); //cur ximinu1(0,0) = x1(0,0)  u(0,0); ximinu1(1,0) = x1(1,0)  u(0,0); ximinu1(2,0) = x1(2,0)  u(0,0); //dia ximinu1(0,1) = x1(0,1)  u(0,1);//g1 ximinu1(1,1) = x1(1,1)  u(0,1); ximinu1(2,1) = x1(2,1)  u(0,1);
std::cout << ximinu1 << std::endl;
cout << " " << endl;
cout << "Transpose matricies" << endl; cout << "xi  u T" << endl;
MatrixXd ximinut(4,2); ximinut= ximinu.transpose(); std::cout << ximinut<< std::endl; cout << " " << endl;
cout << "xi1  u T" << endl; MatrixXd ximinu1t(3,2); ximinu1t= ximinu1.transpose(); std::cout << ximinu1t << std::endl; cout << " " << endl;
cout << "Covariance matrix of group ci" << endl; MatrixXd ci(2,2); ci = ( ximinut * ximinu ) /4.0; std::cout << ci << std::endl; cout << "" << endl;
cout << "Covariance matrix of group ci1" << endl; MatrixXd ci1(2,2); ci1 = ( ximinu1t * ximinu1 ) /3.0; std::cout << ci1 << std::endl; cout << "" << endl;
cout << "Pooled within group Covariance matrix c" << endl; MatrixXd c(2,2); c(0,0) = 4.0/7.0 * ci(0,0) + 3.0/7.0 * ci1(0,0); c(1,0) = 4.0/7.0 * ci(1,0) + 3.0/7.0 * ci1(1,0); c(0,1) = 4.0/7.0 * ci(0,1) + 3.0/7.0 * ci1(0,1); c(1,1) = 4.0/7.0 * ci(1,1) + 3.0/7.0 * ci1(1,1); std::cout << c << std::endl; cout << "" << endl;
cout << "inverse of Pooled within group Covariance matrix cinverse" << endl; MatrixXd cinverse(2,2); cinverse=c.inverse(); std::cout << cinverse << std::endl; cout << "" << endl;
cout << "Probability of a group" << endl; cout << "x = 4/7 x1 = 3/7" << endl;
//create a vector of a probability... cout << "" << endl;
//formula for calculatin likelyhood of data in a group... //fi = uig cinverse xkt  1/2uig cinverse uitg + ln probability
cout << "End of program!" << endl;
return 0; }



11

Products / Arduino Due / Re: Octave/Matlab Vector Programming in Due

on: February 27, 2013, 08:41:13 am

Pattern Matching in arduino c++ I don't have the Arduino Due yet but I did write this code in c++ code blocks on the release compile the size is Output size is 531.00 KB on my windows 8 computer and want to try it in a due. I wonder if the arduino due will be able to hold it and any suggestions to make it fit if not? It inverts and multiplies and divides a constant from a matrix... #include <iostream> #include <Eigen/Dense> #include <Eigen/LU> using Eigen::MatrixXd; using namespace std; int main() { cout << "Hello Pattern matching Linear Discriminent Analisis!" << endl; cout << "" << endl; cout << "x data" << endl;
//data matrix x row col MatrixXd x(4,2); //cur x(0,0) = 2.95;//g0 x(1,0) = 2.53; x(2,0) = 3.57; x(3,0) = 3.16;
//dia x(0,1) = 6.63;//g0 x(1,1) = 7.79; x(2,1) = 5.65; x(3,1) = 5.47;
std::cout << x << std::endl; cout << "End of x data" << endl; cout << "" << endl;
cout << "x1 data" << endl;
MatrixXd x1(3,2);
x1(0,0) = 2.58;//g1 x1(1,0) = 2.16; x1(2,0) = 3.27;
x1(0,1) = 4.46;//g1 x1(1,1) = 6.22; x1(2,1) = 3.52;
std::cout << x1 << std::endl; cout << "End of x1 data" << endl; cout << "" << endl;
//group adv cout << "x data adverage ui" << endl;
MatrixXd ui(1,2);//group/feature ui(0,0)=(x(0,0) + x(1,0) + x(2,0) + x(3,0))/4; ui(0,1)=(x(0,1) + x(1,1) + x(2,1) + x(3,1))/4; std::cout << ui << std::endl; cout << "" << endl;
cout << "x1 data adverage ui1" << endl;
MatrixXd ui1(1,2);//group/feature
ui1(0,0)=(x1(0,0) + x1(1,0) + x1(2,0))/3.0; ui1(0,1)=(x1(0,1) + x1(1,1) + x1(2,1))/3.0; std::cout << ui1 << std::endl; cout << "" << endl;
cout << "x & x1 data adverage u" << endl; MatrixXd u(1,2);//all group/feature u(0,0)=(x(0,0) + x(1,0) + x(2,0) + x(3,0) + x1(0,0) + x1(1,0) + x1(2,0))/7.0;
u(0,1)=(x(0,1) + x(1,1) + x(2,1) + x(3,1) + x1(0,1) + x1(1,1) + x1(2,1))/7.0;
std::cout << u << std::endl; cout << "" << endl;
cout << "mean corrected data xig  u" << endl; MatrixXd ximinu(4,2); //cur ximinu(0,0) = x(0,0)  u(0,0);//f0 ximinu(1,0) = x(1,0)  u(0,0); ximinu(2,0) = x(2,0)  u(0,0); ximinu(3,0) = x(3,0)  u(0,0); //dia ximinu(0,1) = x(0,1)  u(0,1);//f1 ximinu(1,1) = x(1,1)  u(0,1); ximinu(2,1) = x(2,1)  u(0,1); ximinu(3,1) = x(3,1)  u(0,1); std::cout << ximinu << std::endl; cout << "" << endl;
cout << "mean corrected data xi1  u" << endl;
MatrixXd ximinu1(3,2); //cur ximinu1(0,0) = x1(0,0)  u(0,0); ximinu1(1,0) = x1(1,0)  u(0,0); ximinu1(2,0) = x1(2,0)  u(0,0); //dia ximinu1(0,1) = x1(0,1)  u(0,1);//g1 ximinu1(1,1) = x1(1,1)  u(0,1); ximinu1(2,1) = x1(2,1)  u(0,1);
std::cout << ximinu1 << std::endl;
cout << " " << endl;
cout << "Transpose matricies" << endl; cout << "xi  u T" << endl;
MatrixXd ximinut(4,2); ximinut= ximinu.transpose(); std::cout << ximinut<< std::endl; cout << " " << endl;
cout << "xi1  u T" << endl; MatrixXd ximinu1t(3,2); ximinu1t= ximinu1.transpose(); std::cout << ximinu1t << std::endl; cout << " " << endl;
cout << "Covariance matrix of group ci" << endl; MatrixXd ci(2,2); ci = ( ximinut * ximinu ) /4.0; std::cout << ci << std::endl; cout << "" << endl;
cout << "Covariance matrix of group ci1" << endl; MatrixXd ci1(2,2); ci1 = ( ximinu1t * ximinu1 ) /3.0; std::cout << ci1 << std::endl; cout << "" << endl;
cout << "Pooled within group Covariance matrix c" << endl; MatrixXd c(2,2); c(0,0) = 4.0/7.0 * ci(0,0) + 3.0/7.0 * ci1(0,0); c(1,0) = 4.0/7.0 * ci(1,0) + 3.0/7.0 * ci1(1,0); c(0,1) = 4.0/7.0 * ci(0,1) + 3.0/7.0 * ci1(0,1); c(1,1) = 4.0/7.0 * ci(1,1) + 3.0/7.0 * ci1(1,1); std::cout << c << std::endl; cout << "" << endl;
cout << "inverse of Pooled within group Covariance matrix cinverse" << endl; MatrixXd cinverse(2,2); cinverse=c.inverse(); std::cout << cinverse << std::endl; cout << "" << endl;
cout << "Probability of a group" << endl; cout << "x = 4/7 x1 = 3/7" << endl;
//create a vector of a probability... cout << "" << endl;
//formula for calculatin likelyhood of data in a group... //fi = uig cinverse xkt  1/2uig cinverse uitg + ln probability
cout << "End of program!" << endl;
return 0; }



12

Products / Arduino Due / Re: Octave/Matlab Vector Programming in Due

on: February 24, 2013, 09:26:29 am

This is awsome and might work with the maple. I wonder if it would compile for fpga somehow like a xillinx. I am interested in this and want to try to do linear discriminent analisis pattern matching. The matrix inverse multiplication addition etc is needed for it. I do not have a duo yet so i will try it in code blocks then on my leaflabs maple then the duo maby. Has anyone tried this i like their documentation.



15

Forum 20052010 (read only) / Troubleshooting / Re: I have a sketch with loop & setup functions & one

on: October 11, 2010, 04:40:45 pm

thanks andy brown so what I did is:  I took the global vareables section pins and vareables.
 coppied it into my function definition sketch
 removed the declarations because it caused a error and they were allready defined in the main function.
 I have not tried running this yet but it would be a good tutorial for the arduino community to have with the examples a 2 sketch main loop and setup and function defintion sketch.



