public void computeContextLRMatrices(){
	
		//We can not have n*hv sparse matrices due to limits on max. matrix sizes so we will have to perform the multiplication here only.
		
		if( _opt.typeofDecomp.equals("TwoStepLRvsW") ){
		
			LTRMatrix_hvTimeshv=new FlexCompRowMatrix(_contextSize*(_vocab_size+1),_contextSize*(_vocab_size+1));
			RTLMatrix_hvTimeshv=new FlexCompRowMatrix(_contextSize*(_vocab_size+1),_contextSize*(_vocab_size+1));
			LTLMatrix_hvTimeshv=new FlexCompRowMatrix(_contextSize*(_vocab_size+1),_contextSize*(_vocab_size+1));
			RTRMatrix_hvTimeshv=new FlexCompRowMatrix(_contextSize*(_vocab_size+1),_contextSize*(_vocab_size+1));
			
			WTLMatrix_vTimeshv=new FlexCompRowMatrix((_vocab_size+1),_contextSize*(_vocab_size+1));
			LTWMatrix_hvTimesv=new FlexCompRowMatrix(_contextSize*(_vocab_size+1),(_vocab_size+1));
			
			WMatrix_vTimesv=new FlexCompRowMatrix((_vocab_size+1),_vocab_size+1);
			
			WTRMatrix_vTimeshv=new FlexCompRowMatrix((_vocab_size+1),_contextSize*(_vocab_size+1));
			RTWMatrix_hvTimesv=new FlexCompRowMatrix(_contextSize*(_vocab_size+1),(_vocab_size+1));
			
			populateMatricesTwoStepLRvsW(LTRMatrix_hvTimeshv,RTLMatrix_hvTimeshv,LTLMatrix_hvTimeshv,RTRMatrix_hvTimeshv,WTLMatrix_vTimeshv,
					LTWMatrix_hvTimesv,WMatrix_vTimesv,WTRMatrix_vTimeshv,RTWMatrix_hvTimesv);
		}
		
		if(_opt.typeofDecomp.equals("2viewWvsL")|| _opt.typeofDecomp.equals("WvsL")){
			WTLMatrix_vTimeshv=new FlexCompRowMatrix((_vocab_size+1),_contextSize*(_vocab_size+1));
			LTWMatrix_hvTimesv=new FlexCompRowMatrix(_contextSize*(_vocab_size+1),(_vocab_size+1));
			LTLMatrix_hvTimeshv=new FlexCompRowMatrix(_contextSize*(_vocab_size+1),_contextSize*(_vocab_size+1));
			WMatrix_vTimesv=new FlexCompRowMatrix((_vocab_size+1),_vocab_size+1);
			
			populateMatricesWvsL(WTLMatrix_vTimeshv,LTWMatrix_hvTimesv,LTLMatrix_hvTimeshv,WMatrix_vTimesv);
		}
		
		if(_opt.typeofDecomp.equals("2viewWvsR")|| _opt.typeofDecomp.equals("WvsR") ){
			WTRMatrix_vTimeshv=new FlexCompRowMatrix((_vocab_size+1),_contextSize*(_vocab_size+1));
			RTWMatrix_hvTimesv=new FlexCompRowMatrix(_contextSize*(_vocab_size+1),(_vocab_size+1));
			RTRMatrix_hvTimeshv=new FlexCompRowMatrix(_contextSize*(_vocab_size+1),_contextSize*(_vocab_size+1));
			WMatrix_vTimesv=new FlexCompRowMatrix((_vocab_size+1),_vocab_size+1);
			
			populateMatricesWvsR(WTRMatrix_vTimeshv,RTWMatrix_hvTimesv,RTRMatrix_hvTimeshv,WMatrix_vTimesv);
		}
		
		if(_opt.typeofDecomp.equals("2viewWvsLR")|| _opt.typeofDecomp.equals("WvsLR")){
			
			WTLRMatrix_vTimes2hv =new FlexCompRowMatrix((_vocab_size+1),2*_contextSize*(_vocab_size+1));
			
			LRTWMatrix_2hvTimesv=new FlexCompRowMatrix(2*_contextSize*(_vocab_size+1),(_vocab_size+1));
			LRTLRMatrix_2hvTimes2hv=new FlexCompRowMatrix(2*_contextSize*(_vocab_size+1),2*_contextSize*(_vocab_size+1));
			WMatrix_vTimesv=new FlexCompRowMatrix((_vocab_size+1),(_vocab_size+1));
			
			
			System.out.println("+++Initialized the required matrices+++");
			
			
			populateMatricesLRvsW(WTLRMatrix_vTimes2hv,LRTWMatrix_2hvTimesv,LRTLRMatrix_2hvTimes2hv,WMatrix_vTimesv);
			
		}
				
	}