File tree Expand file tree Collapse file tree 1 file changed +17
-2
lines changed Expand file tree Collapse file tree 1 file changed +17
-2
lines changed Original file line number Diff line number Diff line change 1
- import { Matrix , WrapperMatrix2D } from './index' ;
1
+ import { Matrix } from './index' ;
2
2
3
3
/**
4
4
* Compute the projection of a vector into a
@@ -7,5 +7,20 @@ import { Matrix, WrapperMatrix2D } from './index';
7
7
* @return {matrix } projection of vector
8
8
*/
9
9
export function projection ( vector , vectorspace ) {
10
- return ( vector ) ;
10
+ if ( vector . rows < vector . columns ) {
11
+ vector = vector . transpose ( ) ;
12
+ }
13
+ let projVector = Matrix . zeros ( vector . rows ( ) , 1 ) ;
14
+ let coef = 1 ;
15
+
16
+ if ( vector . rows > 1 && vector . columns > 1 ) {
17
+ console . log ( 'ERROR : Vector is not a 1*n vector' ) ;
18
+ return ( 0 ) ;
19
+ } else {
20
+ for ( let i = 0 ; i < vectorspace . rows ( ) ; i ++ ) {
21
+ coef = vector . dot ( vectorspace . getRow ( i ) ) / vectorspace . getRow ( i ) . dot ( vectorspace . getRow ( i ) ) ;
22
+ projVector += vectorspace . getRow ( i ) . transpose ( ) . mulColumn ( 0 , coef ) ;
23
+ }
24
+ return ( projVector ) ;
25
+ }
11
26
}
You can’t perform that action at this time.
0 commit comments