mirror of
				https://github.com/gnss-sdr/gnss-sdr
				synced 2025-10-31 07:13:03 +00:00 
			
		
		
		
	Remove deletes when using Matio
This commit is contained in:
		| @@ -64,6 +64,7 @@ | ||||
| #include <matio.h> | ||||
| #include <exception> | ||||
| #include <utility> | ||||
| #include <vector> | ||||
|  | ||||
|  | ||||
| Rtklib_Solver::Rtklib_Solver(int nchannels, std::string dump_filename, bool flag_dump_to_file, bool flag_dump_to_mat, const rtk_t &rtk) | ||||
| @@ -172,34 +173,34 @@ bool Rtklib_Solver::save_matfile() | ||||
|             return false; | ||||
|         } | ||||
|  | ||||
|     auto *TOW_at_current_symbol_ms = new uint32_t[num_epoch]; | ||||
|     auto *week = new uint32_t[num_epoch]; | ||||
|     auto *RX_time = new double[num_epoch]; | ||||
|     auto *user_clk_offset = new double[num_epoch]; | ||||
|     auto *pos_x = new double[num_epoch]; | ||||
|     auto *pos_y = new double[num_epoch]; | ||||
|     auto *pos_z = new double[num_epoch]; | ||||
|     auto *vel_x = new double[num_epoch]; | ||||
|     auto *vel_y = new double[num_epoch]; | ||||
|     auto *vel_z = new double[num_epoch]; | ||||
|     auto *cov_xx = new double[num_epoch]; | ||||
|     auto *cov_yy = new double[num_epoch]; | ||||
|     auto *cov_zz = new double[num_epoch]; | ||||
|     auto *cov_xy = new double[num_epoch]; | ||||
|     auto *cov_yz = new double[num_epoch]; | ||||
|     auto *cov_zx = new double[num_epoch]; | ||||
|     auto *latitude = new double[num_epoch]; | ||||
|     auto *longitude = new double[num_epoch]; | ||||
|     auto *height = new double[num_epoch]; | ||||
|     auto *valid_sats = new uint8_t[num_epoch]; | ||||
|     auto *solution_status = new uint8_t[num_epoch]; | ||||
|     auto *solution_type = new uint8_t[num_epoch]; | ||||
|     auto *AR_ratio_factor = new float[num_epoch]; | ||||
|     auto *AR_ratio_threshold = new float[num_epoch]; | ||||
|     auto *gdop = new double[num_epoch]; | ||||
|     auto *pdop = new double[num_epoch]; | ||||
|     auto *hdop = new double[num_epoch]; | ||||
|     auto *vdop = new double[num_epoch]; | ||||
|     auto TOW_at_current_symbol_ms = std::vector<uint32_t>(num_epoch); | ||||
|     auto week = std::vector<uint32_t>(num_epoch); | ||||
|     auto RX_time = std::vector<double>(num_epoch); | ||||
|     auto user_clk_offset = std::vector<double>(num_epoch); | ||||
|     auto pos_x = std::vector<double>(num_epoch); | ||||
|     auto pos_y = std::vector<double>(num_epoch); | ||||
|     auto pos_z = std::vector<double>(num_epoch); | ||||
|     auto vel_x = std::vector<double>(num_epoch); | ||||
|     auto vel_y = std::vector<double>(num_epoch); | ||||
|     auto vel_z = std::vector<double>(num_epoch); | ||||
|     auto cov_xx = std::vector<double>(num_epoch); | ||||
|     auto cov_yy = std::vector<double>(num_epoch); | ||||
|     auto cov_zz = std::vector<double>(num_epoch); | ||||
|     auto cov_xy = std::vector<double>(num_epoch); | ||||
|     auto cov_yz = std::vector<double>(num_epoch); | ||||
|     auto cov_zx = std::vector<double>(num_epoch); | ||||
|     auto latitude = std::vector<double>(num_epoch); | ||||
|     auto longitude = std::vector<double>(num_epoch); | ||||
|     auto height = std::vector<double>(num_epoch); | ||||
|     auto valid_sats = std::vector<uint8_t>(num_epoch); | ||||
|     auto solution_status = std::vector<uint8_t>(num_epoch); | ||||
|     auto solution_type = std::vector<uint8_t>(num_epoch); | ||||
|     auto AR_ratio_factor = std::vector<float>(num_epoch); | ||||
|     auto AR_ratio_threshold = std::vector<float>(num_epoch); | ||||
|     auto gdop = std::vector<double>(num_epoch); | ||||
|     auto pdop = std::vector<double>(num_epoch); | ||||
|     auto hdop = std::vector<double>(num_epoch); | ||||
|     auto vdop = std::vector<double>(num_epoch); | ||||
|  | ||||
|     try | ||||
|         { | ||||
| @@ -242,35 +243,6 @@ bool Rtklib_Solver::save_matfile() | ||||
|     catch (const std::ifstream::failure &e) | ||||
|         { | ||||
|             std::cerr << "Problem reading dump file:" << e.what() << std::endl; | ||||
|             delete[] TOW_at_current_symbol_ms; | ||||
|             delete[] week; | ||||
|             delete[] RX_time; | ||||
|             delete[] user_clk_offset; | ||||
|             delete[] pos_x; | ||||
|             delete[] pos_y; | ||||
|             delete[] pos_z; | ||||
|             delete[] vel_x; | ||||
|             delete[] vel_y; | ||||
|             delete[] vel_z; | ||||
|             delete[] cov_xx; | ||||
|             delete[] cov_yy; | ||||
|             delete[] cov_zz; | ||||
|             delete[] cov_xy; | ||||
|             delete[] cov_yz; | ||||
|             delete[] cov_zx; | ||||
|             delete[] latitude; | ||||
|             delete[] longitude; | ||||
|             delete[] height; | ||||
|             delete[] valid_sats; | ||||
|             delete[] solution_status; | ||||
|             delete[] solution_type; | ||||
|             delete[] AR_ratio_factor; | ||||
|             delete[] AR_ratio_threshold; | ||||
|             delete[] gdop; | ||||
|             delete[] pdop; | ||||
|             delete[] hdop; | ||||
|             delete[] vdop; | ||||
|  | ||||
|             return false; | ||||
|         } | ||||
|  | ||||
| @@ -284,149 +256,120 @@ bool Rtklib_Solver::save_matfile() | ||||
|     if (reinterpret_cast<int64_t *>(matfp) != nullptr) | ||||
|         { | ||||
|             size_t dims[2] = {1, static_cast<size_t>(num_epoch)}; | ||||
|             matvar = Mat_VarCreate("TOW_at_current_symbol_ms", MAT_C_UINT32, MAT_T_UINT32, 2, dims, TOW_at_current_symbol_ms, 0); | ||||
|             matvar = Mat_VarCreate("TOW_at_current_symbol_ms", MAT_C_UINT32, MAT_T_UINT32, 2, dims, TOW_at_current_symbol_ms.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("week", MAT_C_UINT32, MAT_T_UINT32, 2, dims, week, 0); | ||||
|             matvar = Mat_VarCreate("week", MAT_C_UINT32, MAT_T_UINT32, 2, dims, week.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("RX_time", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, RX_time, 0); | ||||
|             matvar = Mat_VarCreate("RX_time", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, RX_time.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("user_clk_offset", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, user_clk_offset, 0); | ||||
|             matvar = Mat_VarCreate("user_clk_offset", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, user_clk_offset.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("pos_x", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, pos_x, 0); | ||||
|             matvar = Mat_VarCreate("pos_x", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, pos_x.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("pos_y", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, pos_y, 0); | ||||
|             matvar = Mat_VarCreate("pos_y", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, pos_y.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("pos_z", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, pos_z, 0); | ||||
|             matvar = Mat_VarCreate("pos_z", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, pos_z.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("vel_x", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, vel_x, 0); | ||||
|             matvar = Mat_VarCreate("vel_x", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, vel_x.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("vel_y", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, vel_y, 0); | ||||
|             matvar = Mat_VarCreate("vel_y", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, vel_y.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("vel_z", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, vel_z, 0); | ||||
|             matvar = Mat_VarCreate("vel_z", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, vel_z.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("cov_xx", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, cov_xx, 0); | ||||
|             matvar = Mat_VarCreate("cov_xx", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, cov_xx.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("cov_yy", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, cov_yy, 0); | ||||
|             matvar = Mat_VarCreate("cov_yy", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, cov_yy.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("cov_zz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, cov_zz, 0); | ||||
|             matvar = Mat_VarCreate("cov_zz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, cov_zz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("cov_xy", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, cov_xy, 0); | ||||
|             matvar = Mat_VarCreate("cov_xy", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, cov_xy.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("cov_yz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, cov_yz, 0); | ||||
|             matvar = Mat_VarCreate("cov_yz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, cov_yz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("cov_zx", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, cov_zx, 0); | ||||
|             matvar = Mat_VarCreate("cov_zx", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, cov_zx.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("latitude", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, latitude, 0); | ||||
|             matvar = Mat_VarCreate("latitude", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, latitude.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("longitude", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, longitude, 0); | ||||
|             matvar = Mat_VarCreate("longitude", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, longitude.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("height", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, height, 0); | ||||
|             matvar = Mat_VarCreate("height", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, height.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("valid_sats", MAT_C_UINT8, MAT_T_UINT8, 2, dims, valid_sats, 0); | ||||
|             matvar = Mat_VarCreate("valid_sats", MAT_C_UINT8, MAT_T_UINT8, 2, dims, valid_sats.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("solution_status", MAT_C_UINT8, MAT_T_UINT8, 2, dims, solution_status, 0); | ||||
|             matvar = Mat_VarCreate("solution_status", MAT_C_UINT8, MAT_T_UINT8, 2, dims, solution_status.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("solution_type", MAT_C_UINT8, MAT_T_UINT8, 2, dims, solution_type, 0); | ||||
|             matvar = Mat_VarCreate("solution_type", MAT_C_UINT8, MAT_T_UINT8, 2, dims, solution_type.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("AR_ratio_factor", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, AR_ratio_factor, 0); | ||||
|             matvar = Mat_VarCreate("AR_ratio_factor", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, AR_ratio_factor.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("AR_ratio_threshold", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, AR_ratio_threshold, 0); | ||||
|             matvar = Mat_VarCreate("AR_ratio_threshold", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, AR_ratio_threshold.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("gdop", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, gdop, 0); | ||||
|             matvar = Mat_VarCreate("gdop", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, gdop.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("pdop", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, pdop, 0); | ||||
|             matvar = Mat_VarCreate("pdop", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, pdop.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("hdop", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, hdop, 0); | ||||
|             matvar = Mat_VarCreate("hdop", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, hdop.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("vdop", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, vdop, 0); | ||||
|             matvar = Mat_VarCreate("vdop", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, vdop.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|         } | ||||
|  | ||||
|     Mat_Close(matfp); | ||||
|     delete[] TOW_at_current_symbol_ms; | ||||
|     delete[] week; | ||||
|     delete[] RX_time; | ||||
|     delete[] user_clk_offset; | ||||
|     delete[] pos_x; | ||||
|     delete[] pos_y; | ||||
|     delete[] pos_z; | ||||
|     delete[] vel_x; | ||||
|     delete[] vel_y; | ||||
|     delete[] vel_z; | ||||
|     delete[] cov_xx; | ||||
|     delete[] cov_yy; | ||||
|     delete[] cov_zz; | ||||
|     delete[] cov_xy; | ||||
|     delete[] cov_yz; | ||||
|     delete[] cov_zx; | ||||
|     delete[] latitude; | ||||
|     delete[] longitude; | ||||
|     delete[] height; | ||||
|     delete[] valid_sats; | ||||
|     delete[] solution_status; | ||||
|     delete[] solution_type; | ||||
|     delete[] AR_ratio_factor; | ||||
|     delete[] AR_ratio_threshold; | ||||
|     delete[] gdop; | ||||
|     delete[] pdop; | ||||
|     delete[] hdop; | ||||
|     delete[] vdop; | ||||
|  | ||||
|     return true; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -226,24 +226,14 @@ int32_t hybrid_observables_gs::save_matfile() | ||||
|         { | ||||
|             return 1; | ||||
|         } | ||||
|     auto **RX_time = new double *[d_nchannels_out]; | ||||
|     auto **TOW_at_current_symbol_s = new double *[d_nchannels_out]; | ||||
|     auto **Carrier_Doppler_hz = new double *[d_nchannels_out]; | ||||
|     auto **Carrier_phase_cycles = new double *[d_nchannels_out]; | ||||
|     auto **Pseudorange_m = new double *[d_nchannels_out]; | ||||
|     auto **PRN = new double *[d_nchannels_out]; | ||||
|     auto **Flag_valid_pseudorange = new double *[d_nchannels_out]; | ||||
|  | ||||
|     for (uint32_t i = 0; i < d_nchannels_out; i++) | ||||
|         { | ||||
|             RX_time[i] = new double[num_epoch]; | ||||
|             TOW_at_current_symbol_s[i] = new double[num_epoch]; | ||||
|             Carrier_Doppler_hz[i] = new double[num_epoch]; | ||||
|             Carrier_phase_cycles[i] = new double[num_epoch]; | ||||
|             Pseudorange_m[i] = new double[num_epoch]; | ||||
|             PRN[i] = new double[num_epoch]; | ||||
|             Flag_valid_pseudorange[i] = new double[num_epoch]; | ||||
|         } | ||||
|     auto RX_time = std::vector<std::vector<double>>(d_nchannels_out, std::vector<double>(num_epoch)); | ||||
|     auto TOW_at_current_symbol_s = std::vector<std::vector<double>>(d_nchannels_out, std::vector<double>(num_epoch)); | ||||
|     auto Carrier_Doppler_hz = std::vector<std::vector<double>>(d_nchannels_out, std::vector<double>(num_epoch)); | ||||
|     auto Carrier_phase_cycles = std::vector<std::vector<double>>(d_nchannels_out, std::vector<double>(num_epoch)); | ||||
|     auto Pseudorange_m = std::vector<std::vector<double>>(d_nchannels_out, std::vector<double>(num_epoch)); | ||||
|     auto PRN = std::vector<std::vector<double>>(d_nchannels_out, std::vector<double>(num_epoch)); | ||||
|     auto Flag_valid_pseudorange = std::vector<std::vector<double>>(d_nchannels_out, std::vector<double>(num_epoch)); | ||||
|  | ||||
|     try | ||||
|         { | ||||
| @@ -268,34 +258,17 @@ int32_t hybrid_observables_gs::save_matfile() | ||||
|     catch (const std::ifstream::failure &e) | ||||
|         { | ||||
|             std::cerr << "Problem reading dump file:" << e.what() << std::endl; | ||||
|             for (uint32_t i = 0; i < d_nchannels_out; i++) | ||||
|                 { | ||||
|                     delete[] RX_time[i]; | ||||
|                     delete[] TOW_at_current_symbol_s[i]; | ||||
|                     delete[] Carrier_Doppler_hz[i]; | ||||
|                     delete[] Carrier_phase_cycles[i]; | ||||
|                     delete[] Pseudorange_m[i]; | ||||
|                     delete[] PRN[i]; | ||||
|                     delete[] Flag_valid_pseudorange[i]; | ||||
|                 } | ||||
|             delete[] RX_time; | ||||
|             delete[] TOW_at_current_symbol_s; | ||||
|             delete[] Carrier_Doppler_hz; | ||||
|             delete[] Carrier_phase_cycles; | ||||
|             delete[] Pseudorange_m; | ||||
|             delete[] PRN; | ||||
|             delete[] Flag_valid_pseudorange; | ||||
|  | ||||
|             return 1; | ||||
|         } | ||||
|  | ||||
|     auto *RX_time_aux = new double[d_nchannels_out * num_epoch]; | ||||
|     auto *TOW_at_current_symbol_s_aux = new double[d_nchannels_out * num_epoch]; | ||||
|     auto *Carrier_Doppler_hz_aux = new double[d_nchannels_out * num_epoch]; | ||||
|     auto *Carrier_phase_cycles_aux = new double[d_nchannels_out * num_epoch]; | ||||
|     auto *Pseudorange_m_aux = new double[d_nchannels_out * num_epoch]; | ||||
|     auto *PRN_aux = new double[d_nchannels_out * num_epoch]; | ||||
|     auto *Flag_valid_pseudorange_aux = new double[d_nchannels_out * num_epoch]; | ||||
|     auto RX_time_aux = std::vector<double>(d_nchannels_out * num_epoch); | ||||
|     auto TOW_at_current_symbol_s_aux = std::vector<double>(d_nchannels_out * num_epoch); | ||||
|     auto Carrier_Doppler_hz_aux = std::vector<double>(d_nchannels_out * num_epoch); | ||||
|     auto Carrier_phase_cycles_aux = std::vector<double>(d_nchannels_out * num_epoch); | ||||
|     auto Pseudorange_m_aux = std::vector<double>(d_nchannels_out * num_epoch); | ||||
|     auto PRN_aux = std::vector<double>(d_nchannels_out * num_epoch); | ||||
|     auto Flag_valid_pseudorange_aux = std::vector<double>(d_nchannels_out * num_epoch); | ||||
|  | ||||
|     uint32_t k = 0U; | ||||
|     for (int64_t j = 0; j < num_epoch; j++) | ||||
|         { | ||||
| @@ -325,61 +298,36 @@ int32_t hybrid_observables_gs::save_matfile() | ||||
|     if (reinterpret_cast<int64_t *>(matfp) != nullptr) | ||||
|         { | ||||
|             size_t dims[2] = {static_cast<size_t>(d_nchannels_out), static_cast<size_t>(num_epoch)}; | ||||
|             matvar = Mat_VarCreate("RX_time", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, RX_time_aux, MAT_F_DONT_COPY_DATA); | ||||
|             matvar = Mat_VarCreate("RX_time", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, RX_time_aux.data(), MAT_F_DONT_COPY_DATA); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("TOW_at_current_symbol_s", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, TOW_at_current_symbol_s_aux, MAT_F_DONT_COPY_DATA); | ||||
|             matvar = Mat_VarCreate("TOW_at_current_symbol_s", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, TOW_at_current_symbol_s_aux.data(), MAT_F_DONT_COPY_DATA); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("Carrier_Doppler_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, Carrier_Doppler_hz_aux, MAT_F_DONT_COPY_DATA); | ||||
|             matvar = Mat_VarCreate("Carrier_Doppler_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, Carrier_Doppler_hz_aux.data(), MAT_F_DONT_COPY_DATA); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("Carrier_phase_cycles", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, Carrier_phase_cycles_aux, MAT_F_DONT_COPY_DATA); | ||||
|             matvar = Mat_VarCreate("Carrier_phase_cycles", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, Carrier_phase_cycles_aux.data(), MAT_F_DONT_COPY_DATA); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("Pseudorange_m", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, Pseudorange_m_aux, MAT_F_DONT_COPY_DATA); | ||||
|             matvar = Mat_VarCreate("Pseudorange_m", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, Pseudorange_m_aux.data(), MAT_F_DONT_COPY_DATA); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("PRN", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, PRN_aux, MAT_F_DONT_COPY_DATA); | ||||
|             matvar = Mat_VarCreate("PRN", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, PRN_aux.data(), MAT_F_DONT_COPY_DATA); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("Flag_valid_pseudorange", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, Flag_valid_pseudorange_aux, MAT_F_DONT_COPY_DATA); | ||||
|             matvar = Mat_VarCreate("Flag_valid_pseudorange", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, Flag_valid_pseudorange_aux.data(), MAT_F_DONT_COPY_DATA); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|         } | ||||
|     Mat_Close(matfp); | ||||
|  | ||||
|     for (uint32_t i = 0; i < d_nchannels_out; i++) | ||||
|         { | ||||
|             delete[] RX_time[i]; | ||||
|             delete[] TOW_at_current_symbol_s[i]; | ||||
|             delete[] Carrier_Doppler_hz[i]; | ||||
|             delete[] Carrier_phase_cycles[i]; | ||||
|             delete[] Pseudorange_m[i]; | ||||
|             delete[] PRN[i]; | ||||
|             delete[] Flag_valid_pseudorange[i]; | ||||
|         } | ||||
|     delete[] RX_time; | ||||
|     delete[] TOW_at_current_symbol_s; | ||||
|     delete[] Carrier_Doppler_hz; | ||||
|     delete[] Carrier_phase_cycles; | ||||
|     delete[] Pseudorange_m; | ||||
|     delete[] PRN; | ||||
|     delete[] Flag_valid_pseudorange; | ||||
|  | ||||
|     delete[] RX_time_aux; | ||||
|     delete[] TOW_at_current_symbol_s_aux; | ||||
|     delete[] Carrier_Doppler_hz_aux; | ||||
|     delete[] Carrier_phase_cycles_aux; | ||||
|     delete[] Pseudorange_m_aux; | ||||
|     delete[] PRN_aux; | ||||
|     delete[] Flag_valid_pseudorange_aux; | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -67,6 +67,7 @@ | ||||
| #include <iostream>  // for cout, cerr | ||||
| #include <map> | ||||
| #include <numeric> | ||||
| #include <vector> | ||||
|  | ||||
| #if HAS_STD_FILESYSTEM | ||||
| #if HAS_STD_FILESYSTEM_EXPERIMENTAL | ||||
| @@ -1361,28 +1362,28 @@ int32_t dll_pll_veml_tracking::save_matfile() | ||||
|         { | ||||
|             return 1; | ||||
|         } | ||||
|     auto *abs_VE = new float[num_epoch]; | ||||
|     auto *abs_E = new float[num_epoch]; | ||||
|     auto *abs_P = new float[num_epoch]; | ||||
|     auto *abs_L = new float[num_epoch]; | ||||
|     auto *abs_VL = new float[num_epoch]; | ||||
|     auto *Prompt_I = new float[num_epoch]; | ||||
|     auto *Prompt_Q = new float[num_epoch]; | ||||
|     auto *PRN_start_sample_count = new uint64_t[num_epoch]; | ||||
|     auto *acc_carrier_phase_rad = new float[num_epoch]; | ||||
|     auto *carrier_doppler_hz = new float[num_epoch]; | ||||
|     auto *carrier_doppler_rate_hz = new float[num_epoch]; | ||||
|     auto *code_freq_chips = new float[num_epoch]; | ||||
|     auto *code_freq_rate_chips = new float[num_epoch]; | ||||
|     auto *carr_error_hz = new float[num_epoch]; | ||||
|     auto *carr_error_filt_hz = new float[num_epoch]; | ||||
|     auto *code_error_chips = new float[num_epoch]; | ||||
|     auto *code_error_filt_chips = new float[num_epoch]; | ||||
|     auto *CN0_SNV_dB_Hz = new float[num_epoch]; | ||||
|     auto *carrier_lock_test = new float[num_epoch]; | ||||
|     auto *aux1 = new float[num_epoch]; | ||||
|     auto *aux2 = new double[num_epoch]; | ||||
|     auto *PRN = new uint32_t[num_epoch]; | ||||
|     auto abs_VE = std::vector<float>(num_epoch); | ||||
|     auto abs_E = std::vector<float>(num_epoch); | ||||
|     auto abs_P = std::vector<float>(num_epoch); | ||||
|     auto abs_L = std::vector<float>(num_epoch); | ||||
|     auto abs_VL = std::vector<float>(num_epoch); | ||||
|     auto Prompt_I = std::vector<float>(num_epoch); | ||||
|     auto Prompt_Q = std::vector<float>(num_epoch); | ||||
|     auto PRN_start_sample_count = std::vector<uint64_t>(num_epoch); | ||||
|     auto acc_carrier_phase_rad = std::vector<float>(num_epoch); | ||||
|     auto carrier_doppler_hz = std::vector<float>(num_epoch); | ||||
|     auto carrier_doppler_rate_hz = std::vector<float>(num_epoch); | ||||
|     auto code_freq_chips = std::vector<float>(num_epoch); | ||||
|     auto code_freq_rate_chips = std::vector<float>(num_epoch); | ||||
|     auto carr_error_hz = std::vector<float>(num_epoch); | ||||
|     auto carr_error_filt_hz = std::vector<float>(num_epoch); | ||||
|     auto code_error_chips = std::vector<float>(num_epoch); | ||||
|     auto code_error_filt_chips = std::vector<float>(num_epoch); | ||||
|     auto CN0_SNV_dB_Hz = std::vector<float>(num_epoch); | ||||
|     auto carrier_lock_test = std::vector<float>(num_epoch); | ||||
|     auto aux1 = std::vector<float>(num_epoch); | ||||
|     auto aux2 = std::vector<double>(num_epoch); | ||||
|     auto PRN = std::vector<uint32_t>(num_epoch); | ||||
|  | ||||
|     try | ||||
|         { | ||||
| @@ -1419,28 +1420,6 @@ int32_t dll_pll_veml_tracking::save_matfile() | ||||
|     catch (const std::ifstream::failure &e) | ||||
|         { | ||||
|             std::cerr << "Problem reading dump file:" << e.what() << std::endl; | ||||
|             delete[] abs_VE; | ||||
|             delete[] abs_E; | ||||
|             delete[] abs_P; | ||||
|             delete[] abs_L; | ||||
|             delete[] abs_VL; | ||||
|             delete[] Prompt_I; | ||||
|             delete[] Prompt_Q; | ||||
|             delete[] PRN_start_sample_count; | ||||
|             delete[] acc_carrier_phase_rad; | ||||
|             delete[] carrier_doppler_hz; | ||||
|             delete[] carrier_doppler_rate_hz; | ||||
|             delete[] code_freq_chips; | ||||
|             delete[] code_freq_rate_chips; | ||||
|             delete[] carr_error_hz; | ||||
|             delete[] carr_error_filt_hz; | ||||
|             delete[] code_error_chips; | ||||
|             delete[] code_error_filt_chips; | ||||
|             delete[] CN0_SNV_dB_Hz; | ||||
|             delete[] carrier_lock_test; | ||||
|             delete[] aux1; | ||||
|             delete[] aux2; | ||||
|             delete[] PRN; | ||||
|             return 1; | ||||
|         } | ||||
|  | ||||
| @@ -1454,117 +1433,95 @@ int32_t dll_pll_veml_tracking::save_matfile() | ||||
|     if (reinterpret_cast<int64_t *>(matfp) != nullptr) | ||||
|         { | ||||
|             size_t dims[2] = {1, static_cast<size_t>(num_epoch)}; | ||||
|             matvar = Mat_VarCreate("abs_VE", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_VE, 0); | ||||
|             matvar = Mat_VarCreate("abs_VE", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_VE.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("abs_E", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_E, 0); | ||||
|             matvar = Mat_VarCreate("abs_E", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_E.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("abs_P", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_P, 0); | ||||
|             matvar = Mat_VarCreate("abs_P", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_P.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("abs_L", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_L, 0); | ||||
|             matvar = Mat_VarCreate("abs_L", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_L.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("abs_VL", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_VL, 0); | ||||
|             matvar = Mat_VarCreate("abs_VL", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_VL.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("Prompt_I", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_I, 0); | ||||
|             matvar = Mat_VarCreate("Prompt_I", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_I.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("Prompt_Q", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_Q, 0); | ||||
|             matvar = Mat_VarCreate("Prompt_Q", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_Q.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("PRN_start_sample_count", MAT_C_UINT64, MAT_T_UINT64, 2, dims, PRN_start_sample_count, 0); | ||||
|             matvar = Mat_VarCreate("PRN_start_sample_count", MAT_C_UINT64, MAT_T_UINT64, 2, dims, PRN_start_sample_count.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("acc_carrier_phase_rad", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, acc_carrier_phase_rad, 0); | ||||
|             matvar = Mat_VarCreate("acc_carrier_phase_rad", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, acc_carrier_phase_rad.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carrier_doppler_hz", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carrier_doppler_hz, 0); | ||||
|             matvar = Mat_VarCreate("carrier_doppler_hz", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carrier_doppler_hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carrier_doppler_rate_hz", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carrier_doppler_rate_hz, 0); | ||||
|             matvar = Mat_VarCreate("carrier_doppler_rate_hz", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carrier_doppler_rate_hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("code_freq_chips", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, code_freq_chips, 0); | ||||
|             matvar = Mat_VarCreate("code_freq_chips", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, code_freq_chips.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("code_freq_rate_chips", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, code_freq_rate_chips, 0); | ||||
|             matvar = Mat_VarCreate("code_freq_rate_chips", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, code_freq_rate_chips.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carr_error_hz", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carr_error_hz, 0); | ||||
|             matvar = Mat_VarCreate("carr_error_hz", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carr_error_hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carr_error_filt_hz", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carr_error_filt_hz, 0); | ||||
|             matvar = Mat_VarCreate("carr_error_filt_hz", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carr_error_filt_hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("code_error_chips", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, code_error_chips, 0); | ||||
|             matvar = Mat_VarCreate("code_error_chips", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, code_error_chips.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("code_error_filt_chips", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, code_error_filt_chips, 0); | ||||
|             matvar = Mat_VarCreate("code_error_filt_chips", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, code_error_filt_chips.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("CN0_SNV_dB_Hz", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, CN0_SNV_dB_Hz, 0); | ||||
|             matvar = Mat_VarCreate("CN0_SNV_dB_Hz", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, CN0_SNV_dB_Hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carrier_lock_test", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carrier_lock_test, 0); | ||||
|             matvar = Mat_VarCreate("carrier_lock_test", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carrier_lock_test.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("aux1", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, aux1, 0); | ||||
|             matvar = Mat_VarCreate("aux1", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, aux1.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("aux2", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux2, 0); | ||||
|             matvar = Mat_VarCreate("aux2", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux2.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("PRN", MAT_C_UINT32, MAT_T_UINT32, 2, dims, PRN, 0); | ||||
|             matvar = Mat_VarCreate("PRN", MAT_C_UINT32, MAT_T_UINT32, 2, dims, PRN.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|         } | ||||
|     Mat_Close(matfp); | ||||
|     delete[] abs_VE; | ||||
|     delete[] abs_E; | ||||
|     delete[] abs_P; | ||||
|     delete[] abs_L; | ||||
|     delete[] abs_VL; | ||||
|     delete[] Prompt_I; | ||||
|     delete[] Prompt_Q; | ||||
|     delete[] PRN_start_sample_count; | ||||
|     delete[] acc_carrier_phase_rad; | ||||
|     delete[] carrier_doppler_hz; | ||||
|     delete[] carrier_doppler_rate_hz; | ||||
|     delete[] code_freq_chips; | ||||
|     delete[] code_freq_rate_chips; | ||||
|     delete[] carr_error_hz; | ||||
|     delete[] carr_error_filt_hz; | ||||
|     delete[] code_error_chips; | ||||
|     delete[] code_error_filt_chips; | ||||
|     delete[] CN0_SNV_dB_Hz; | ||||
|     delete[] carrier_lock_test; | ||||
|     delete[] aux1; | ||||
|     delete[] aux2; | ||||
|     delete[] PRN; | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -58,6 +58,7 @@ | ||||
| #include <exception> | ||||
| #include <iostream> | ||||
| #include <map> | ||||
| #include <vector> | ||||
|  | ||||
| #if HAS_STD_FILESYSTEM | ||||
| #if HAS_STD_FILESYSTEM_EXPERIMENTAL | ||||
| @@ -1036,28 +1037,28 @@ int32_t dll_pll_veml_tracking_fpga::save_matfile() | ||||
|         { | ||||
|             return 1; | ||||
|         } | ||||
|     auto *abs_VE = new float[num_epoch]; | ||||
|     auto *abs_E = new float[num_epoch]; | ||||
|     auto *abs_P = new float[num_epoch]; | ||||
|     auto *abs_L = new float[num_epoch]; | ||||
|     auto *abs_VL = new float[num_epoch]; | ||||
|     auto *Prompt_I = new float[num_epoch]; | ||||
|     auto *Prompt_Q = new float[num_epoch]; | ||||
|     auto *PRN_start_sample_count = new uint64_t[num_epoch]; | ||||
|     auto *acc_carrier_phase_rad = new float[num_epoch]; | ||||
|     auto *carrier_doppler_hz = new float[num_epoch]; | ||||
|     auto *carrier_doppler_rate_hz = new float[num_epoch]; | ||||
|     auto *code_freq_chips = new float[num_epoch]; | ||||
|     auto *code_freq_rate_chips = new float[num_epoch]; | ||||
|     auto *carr_error_hz = new float[num_epoch]; | ||||
|     auto *carr_error_filt_hz = new float[num_epoch]; | ||||
|     auto *code_error_chips = new float[num_epoch]; | ||||
|     auto *code_error_filt_chips = new float[num_epoch]; | ||||
|     auto *CN0_SNV_dB_Hz = new float[num_epoch]; | ||||
|     auto *carrier_lock_test = new float[num_epoch]; | ||||
|     auto *aux1 = new float[num_epoch]; | ||||
|     auto *aux2 = new double[num_epoch]; | ||||
|     auto *PRN = new uint32_t[num_epoch]; | ||||
|     auto abs_VE = std::vector<float>(num_epoch); | ||||
|     auto abs_E = std::vector<float>(num_epoch); | ||||
|     auto abs_P = std::vector<float>(num_epoch); | ||||
|     auto abs_L = std::vector<float>(num_epoch); | ||||
|     auto abs_VL = std::vector<float>(num_epoch); | ||||
|     auto Prompt_I = std::vector<float>(num_epoch); | ||||
|     auto Prompt_Q = std::vector<float>(num_epoch); | ||||
|     auto PRN_start_sample_count = std::vector<uint64_t>(num_epoch); | ||||
|     auto acc_carrier_phase_rad = std::vector<float>(num_epoch); | ||||
|     auto carrier_doppler_hz = std::vector<float>(num_epoch); | ||||
|     auto carrier_doppler_rate_hz = std::vector<float>(num_epoch); | ||||
|     auto code_freq_chips = std::vector<float>(num_epoch); | ||||
|     auto code_freq_rate_chips = std::vector<float>(num_epoch); | ||||
|     auto carr_error_hz = std::vector<float>(num_epoch); | ||||
|     auto carr_error_filt_hz = std::vector<float>(num_epoch); | ||||
|     auto code_error_chips = std::vector<float>(num_epoch); | ||||
|     auto code_error_filt_chips = std::vector<float>(num_epoch); | ||||
|     auto CN0_SNV_dB_Hz = std::vector<float>(num_epoch); | ||||
|     auto carrier_lock_test = std::vector<float>(num_epoch); | ||||
|     auto aux1 = std::vector<float>(num_epoch); | ||||
|     auto aux2 = std::vector<double>(num_epoch); | ||||
|     auto PRN = std::vector<uint32_t>(num_epoch); | ||||
|  | ||||
|     try | ||||
|         { | ||||
| @@ -1094,28 +1095,6 @@ int32_t dll_pll_veml_tracking_fpga::save_matfile() | ||||
|     catch (const std::ifstream::failure &e) | ||||
|         { | ||||
|             std::cerr << "Problem reading dump file:" << e.what() << std::endl; | ||||
|             delete[] abs_VE; | ||||
|             delete[] abs_E; | ||||
|             delete[] abs_P; | ||||
|             delete[] abs_L; | ||||
|             delete[] abs_VL; | ||||
|             delete[] Prompt_I; | ||||
|             delete[] Prompt_Q; | ||||
|             delete[] PRN_start_sample_count; | ||||
|             delete[] acc_carrier_phase_rad; | ||||
|             delete[] carrier_doppler_hz; | ||||
|             delete[] carrier_doppler_rate_hz; | ||||
|             delete[] code_freq_chips; | ||||
|             delete[] code_freq_rate_chips; | ||||
|             delete[] carr_error_hz; | ||||
|             delete[] carr_error_filt_hz; | ||||
|             delete[] code_error_chips; | ||||
|             delete[] code_error_filt_chips; | ||||
|             delete[] CN0_SNV_dB_Hz; | ||||
|             delete[] carrier_lock_test; | ||||
|             delete[] aux1; | ||||
|             delete[] aux2; | ||||
|             delete[] PRN; | ||||
|             return 1; | ||||
|         } | ||||
|  | ||||
| @@ -1129,117 +1108,95 @@ int32_t dll_pll_veml_tracking_fpga::save_matfile() | ||||
|     if (reinterpret_cast<int64_t *>(matfp) != nullptr) | ||||
|         { | ||||
|             size_t dims[2] = {1, static_cast<size_t>(num_epoch)}; | ||||
|             matvar = Mat_VarCreate("abs_VE", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_VE, 0); | ||||
|             matvar = Mat_VarCreate("abs_VE", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_VE.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("abs_E", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_E, 0); | ||||
|             matvar = Mat_VarCreate("abs_E", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_E.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("abs_P", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_P, 0); | ||||
|             matvar = Mat_VarCreate("abs_P", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_P.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("abs_L", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_L, 0); | ||||
|             matvar = Mat_VarCreate("abs_L", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_L.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("abs_VL", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_VL, 0); | ||||
|             matvar = Mat_VarCreate("abs_VL", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_VL.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("Prompt_I", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_I, 0); | ||||
|             matvar = Mat_VarCreate("Prompt_I", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_I.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("Prompt_Q", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_Q, 0); | ||||
|             matvar = Mat_VarCreate("Prompt_Q", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_Q.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("PRN_start_sample_count", MAT_C_UINT64, MAT_T_UINT64, 2, dims, PRN_start_sample_count, 0); | ||||
|             matvar = Mat_VarCreate("PRN_start_sample_count", MAT_C_UINT64, MAT_T_UINT64, 2, dims, PRN_start_sample_count.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("acc_carrier_phase_rad", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, acc_carrier_phase_rad, 0); | ||||
|             matvar = Mat_VarCreate("acc_carrier_phase_rad", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, acc_carrier_phase_rad.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carrier_doppler_hz", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carrier_doppler_hz, 0); | ||||
|             matvar = Mat_VarCreate("carrier_doppler_hz", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carrier_doppler_hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carrier_doppler_rate_hz", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carrier_doppler_rate_hz, 0); | ||||
|             matvar = Mat_VarCreate("carrier_doppler_rate_hz", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carrier_doppler_rate_hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("code_freq_chips", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, code_freq_chips, 0); | ||||
|             matvar = Mat_VarCreate("code_freq_chips", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, code_freq_chips.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("code_freq_rate_chips", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, code_freq_rate_chips, 0); | ||||
|             matvar = Mat_VarCreate("code_freq_rate_chips", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, code_freq_rate_chips.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carr_error_hz", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carr_error_hz, 0); | ||||
|             matvar = Mat_VarCreate("carr_error_hz", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carr_error_hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carr_error_filt_hz", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carr_error_filt_hz, 0); | ||||
|             matvar = Mat_VarCreate("carr_error_filt_hz", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carr_error_filt_hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("code_error_chips", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, code_error_chips, 0); | ||||
|             matvar = Mat_VarCreate("code_error_chips", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, code_error_chips.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("code_error_filt_chips", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, code_error_filt_chips, 0); | ||||
|             matvar = Mat_VarCreate("code_error_filt_chips", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, code_error_filt_chips.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("CN0_SNV_dB_Hz", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, CN0_SNV_dB_Hz, 0); | ||||
|             matvar = Mat_VarCreate("CN0_SNV_dB_Hz", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, CN0_SNV_dB_Hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carrier_lock_test", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carrier_lock_test, 0); | ||||
|             matvar = Mat_VarCreate("carrier_lock_test", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carrier_lock_test.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("aux1", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, aux1, 0); | ||||
|             matvar = Mat_VarCreate("aux1", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, aux1.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("aux2", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux2, 0); | ||||
|             matvar = Mat_VarCreate("aux2", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux2.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("PRN", MAT_C_UINT32, MAT_T_UINT32, 2, dims, PRN, 0); | ||||
|             matvar = Mat_VarCreate("PRN", MAT_C_UINT32, MAT_T_UINT32, 2, dims, PRN.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|         } | ||||
|     Mat_Close(matfp); | ||||
|     delete[] abs_VE; | ||||
|     delete[] abs_E; | ||||
|     delete[] abs_P; | ||||
|     delete[] abs_L; | ||||
|     delete[] abs_VL; | ||||
|     delete[] Prompt_I; | ||||
|     delete[] Prompt_Q; | ||||
|     delete[] PRN_start_sample_count; | ||||
|     delete[] acc_carrier_phase_rad; | ||||
|     delete[] carrier_doppler_hz; | ||||
|     delete[] carrier_doppler_rate_hz; | ||||
|     delete[] code_freq_chips; | ||||
|     delete[] code_freq_rate_chips; | ||||
|     delete[] carr_error_hz; | ||||
|     delete[] carr_error_filt_hz; | ||||
|     delete[] code_error_chips; | ||||
|     delete[] code_error_filt_chips; | ||||
|     delete[] CN0_SNV_dB_Hz; | ||||
|     delete[] carrier_lock_test; | ||||
|     delete[] aux1; | ||||
|     delete[] aux2; | ||||
|     delete[] PRN; | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -386,24 +386,24 @@ int32_t glonass_l1_ca_dll_pll_c_aid_tracking_cc::save_matfile() | ||||
|         { | ||||
|             return 1; | ||||
|         } | ||||
|     auto *abs_E = new float[num_epoch]; | ||||
|     auto *abs_P = new float[num_epoch]; | ||||
|     auto *abs_L = new float[num_epoch]; | ||||
|     auto *Prompt_I = new float[num_epoch]; | ||||
|     auto *Prompt_Q = new float[num_epoch]; | ||||
|     auto *PRN_start_sample_count = new uint64_t[num_epoch]; | ||||
|     auto *acc_carrier_phase_rad = new double[num_epoch]; | ||||
|     auto *carrier_doppler_hz = new double[num_epoch]; | ||||
|     auto *code_freq_chips = new double[num_epoch]; | ||||
|     auto *carr_error_hz = new double[num_epoch]; | ||||
|     auto *carr_error_filt_hz = new double[num_epoch]; | ||||
|     auto *code_error_chips = new double[num_epoch]; | ||||
|     auto *code_error_filt_chips = new double[num_epoch]; | ||||
|     auto *CN0_SNV_dB_Hz = new double[num_epoch]; | ||||
|     auto *carrier_lock_test = new double[num_epoch]; | ||||
|     auto *aux1 = new double[num_epoch]; | ||||
|     auto *aux2 = new double[num_epoch]; | ||||
|     auto *PRN = new uint32_t[num_epoch]; | ||||
|     auto abs_E = std::vector<float>(num_epoch); | ||||
|     auto abs_P = std::vector<float>(num_epoch); | ||||
|     auto abs_L = std::vector<float>(num_epoch); | ||||
|     auto Prompt_I = std::vector<float>(num_epoch); | ||||
|     auto Prompt_Q = std::vector<float>(num_epoch); | ||||
|     auto PRN_start_sample_count = std::vector<uint64_t>(num_epoch); | ||||
|     auto acc_carrier_phase_rad = std::vector<double>(num_epoch); | ||||
|     auto carrier_doppler_hz = std::vector<double>(num_epoch); | ||||
|     auto code_freq_chips = std::vector<double>(num_epoch); | ||||
|     auto carr_error_hz = std::vector<double>(num_epoch); | ||||
|     auto carr_error_filt_hz = std::vector<double>(num_epoch); | ||||
|     auto code_error_chips = std::vector<double>(num_epoch); | ||||
|     auto code_error_filt_chips = std::vector<double>(num_epoch); | ||||
|     auto CN0_SNV_dB_Hz = std::vector<double>(num_epoch); | ||||
|     auto carrier_lock_test = std::vector<double>(num_epoch); | ||||
|     auto aux1 = std::vector<double>(num_epoch); | ||||
|     auto aux2 = std::vector<double>(num_epoch); | ||||
|     auto PRN = std::vector<uint32_t>(num_epoch); | ||||
|  | ||||
|     try | ||||
|         { | ||||
| @@ -436,24 +436,6 @@ int32_t glonass_l1_ca_dll_pll_c_aid_tracking_cc::save_matfile() | ||||
|     catch (const std::ifstream::failure &e) | ||||
|         { | ||||
|             std::cerr << "Problem reading dump file:" << e.what() << std::endl; | ||||
|             delete[] abs_E; | ||||
|             delete[] abs_P; | ||||
|             delete[] abs_L; | ||||
|             delete[] Prompt_I; | ||||
|             delete[] Prompt_Q; | ||||
|             delete[] PRN_start_sample_count; | ||||
|             delete[] acc_carrier_phase_rad; | ||||
|             delete[] carrier_doppler_hz; | ||||
|             delete[] code_freq_chips; | ||||
|             delete[] carr_error_hz; | ||||
|             delete[] carr_error_filt_hz; | ||||
|             delete[] code_error_chips; | ||||
|             delete[] code_error_filt_chips; | ||||
|             delete[] CN0_SNV_dB_Hz; | ||||
|             delete[] carrier_lock_test; | ||||
|             delete[] aux1; | ||||
|             delete[] aux2; | ||||
|             delete[] PRN; | ||||
|             return 1; | ||||
|         } | ||||
|  | ||||
| @@ -467,97 +449,79 @@ int32_t glonass_l1_ca_dll_pll_c_aid_tracking_cc::save_matfile() | ||||
|     if (reinterpret_cast<int64_t *>(matfp) != nullptr) | ||||
|         { | ||||
|             size_t dims[2] = {1, static_cast<size_t>(num_epoch)}; | ||||
|             matvar = Mat_VarCreate("abs_E", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_E, 0); | ||||
|             matvar = Mat_VarCreate("abs_E", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_E.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("abs_P", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_P, 0); | ||||
|             matvar = Mat_VarCreate("abs_P", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_P.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("abs_L", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_L, 0); | ||||
|             matvar = Mat_VarCreate("abs_L", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_L.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("Prompt_I", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_I, 0); | ||||
|             matvar = Mat_VarCreate("Prompt_I", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_I.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("Prompt_Q", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_Q, 0); | ||||
|             matvar = Mat_VarCreate("Prompt_Q", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_Q.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("PRN_start_sample_count", MAT_C_UINT64, MAT_T_UINT64, 2, dims, PRN_start_sample_count, 0); | ||||
|             matvar = Mat_VarCreate("PRN_start_sample_count", MAT_C_UINT64, MAT_T_UINT64, 2, dims, PRN_start_sample_count.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("acc_carrier_phase_rad", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, acc_carrier_phase_rad, 0); | ||||
|             matvar = Mat_VarCreate("acc_carrier_phase_rad", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, acc_carrier_phase_rad.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carrier_doppler_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carrier_doppler_hz, 0); | ||||
|             matvar = Mat_VarCreate("carrier_doppler_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carrier_doppler_hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("code_freq_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_freq_chips, 0); | ||||
|             matvar = Mat_VarCreate("code_freq_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_freq_chips.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carr_error_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carr_error_hz, 0); | ||||
|             matvar = Mat_VarCreate("carr_error_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carr_error_hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carr_error_filt_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carr_error_filt_hz, 0); | ||||
|             matvar = Mat_VarCreate("carr_error_filt_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carr_error_filt_hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("code_error_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_error_chips, 0); | ||||
|             matvar = Mat_VarCreate("code_error_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_error_chips.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("code_error_filt_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_error_filt_chips, 0); | ||||
|             matvar = Mat_VarCreate("code_error_filt_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_error_filt_chips.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("CN0_SNV_dB_Hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, CN0_SNV_dB_Hz, 0); | ||||
|             matvar = Mat_VarCreate("CN0_SNV_dB_Hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, CN0_SNV_dB_Hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carrier_lock_test", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carrier_lock_test, 0); | ||||
|             matvar = Mat_VarCreate("carrier_lock_test", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carrier_lock_test.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("aux1", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux1, 0); | ||||
|             matvar = Mat_VarCreate("aux1", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux1.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("aux2", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux2, 0); | ||||
|             matvar = Mat_VarCreate("aux2", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux2.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("PRN", MAT_C_UINT32, MAT_T_UINT32, 2, dims, PRN, 0); | ||||
|             matvar = Mat_VarCreate("PRN", MAT_C_UINT32, MAT_T_UINT32, 2, dims, PRN.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|         } | ||||
|     Mat_Close(matfp); | ||||
|     delete[] abs_E; | ||||
|     delete[] abs_P; | ||||
|     delete[] abs_L; | ||||
|     delete[] Prompt_I; | ||||
|     delete[] Prompt_Q; | ||||
|     delete[] PRN_start_sample_count; | ||||
|     delete[] acc_carrier_phase_rad; | ||||
|     delete[] carrier_doppler_hz; | ||||
|     delete[] code_freq_chips; | ||||
|     delete[] carr_error_hz; | ||||
|     delete[] carr_error_filt_hz; | ||||
|     delete[] code_error_chips; | ||||
|     delete[] code_error_filt_chips; | ||||
|     delete[] CN0_SNV_dB_Hz; | ||||
|     delete[] carrier_lock_test; | ||||
|     delete[] aux1; | ||||
|     delete[] aux2; | ||||
|     delete[] PRN; | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -333,24 +333,24 @@ int32_t glonass_l1_ca_dll_pll_c_aid_tracking_sc::save_matfile() | ||||
|         { | ||||
|             return 1; | ||||
|         } | ||||
|     auto *abs_E = new float[num_epoch]; | ||||
|     auto *abs_P = new float[num_epoch]; | ||||
|     auto *abs_L = new float[num_epoch]; | ||||
|     auto *Prompt_I = new float[num_epoch]; | ||||
|     auto *Prompt_Q = new float[num_epoch]; | ||||
|     auto *PRN_start_sample_count = new uint64_t[num_epoch]; | ||||
|     auto *acc_carrier_phase_rad = new double[num_epoch]; | ||||
|     auto *carrier_doppler_hz = new double[num_epoch]; | ||||
|     auto *code_freq_chips = new double[num_epoch]; | ||||
|     auto *carr_error_hz = new double[num_epoch]; | ||||
|     auto *carr_error_filt_hz = new double[num_epoch]; | ||||
|     auto *code_error_chips = new double[num_epoch]; | ||||
|     auto *code_error_filt_chips = new double[num_epoch]; | ||||
|     auto *CN0_SNV_dB_Hz = new double[num_epoch]; | ||||
|     auto *carrier_lock_test = new double[num_epoch]; | ||||
|     auto *aux1 = new double[num_epoch]; | ||||
|     auto *aux2 = new double[num_epoch]; | ||||
|     auto *PRN = new uint32_t[num_epoch]; | ||||
|     auto abs_E = std::vector<float>(num_epoch); | ||||
|     auto abs_P = std::vector<float>(num_epoch); | ||||
|     auto abs_L = std::vector<float>(num_epoch); | ||||
|     auto Prompt_I = std::vector<float>(num_epoch); | ||||
|     auto Prompt_Q = std::vector<float>(num_epoch); | ||||
|     auto PRN_start_sample_count = std::vector<uint64_t>(num_epoch); | ||||
|     auto acc_carrier_phase_rad = std::vector<double>(num_epoch); | ||||
|     auto carrier_doppler_hz = std::vector<double>(num_epoch); | ||||
|     auto code_freq_chips = std::vector<double>(num_epoch); | ||||
|     auto carr_error_hz = std::vector<double>(num_epoch); | ||||
|     auto carr_error_filt_hz = std::vector<double>(num_epoch); | ||||
|     auto code_error_chips = std::vector<double>(num_epoch); | ||||
|     auto code_error_filt_chips = std::vector<double>(num_epoch); | ||||
|     auto CN0_SNV_dB_Hz = std::vector<double>(num_epoch); | ||||
|     auto carrier_lock_test = std::vector<double>(num_epoch); | ||||
|     auto aux1 = std::vector<double>(num_epoch); | ||||
|     auto aux2 = std::vector<double>(num_epoch); | ||||
|     auto PRN = std::vector<uint32_t>(num_epoch); | ||||
|  | ||||
|     try | ||||
|         { | ||||
| @@ -383,24 +383,6 @@ int32_t glonass_l1_ca_dll_pll_c_aid_tracking_sc::save_matfile() | ||||
|     catch (const std::ifstream::failure &e) | ||||
|         { | ||||
|             std::cerr << "Problem reading dump file:" << e.what() << std::endl; | ||||
|             delete[] abs_E; | ||||
|             delete[] abs_P; | ||||
|             delete[] abs_L; | ||||
|             delete[] Prompt_I; | ||||
|             delete[] Prompt_Q; | ||||
|             delete[] PRN_start_sample_count; | ||||
|             delete[] acc_carrier_phase_rad; | ||||
|             delete[] carrier_doppler_hz; | ||||
|             delete[] code_freq_chips; | ||||
|             delete[] carr_error_hz; | ||||
|             delete[] carr_error_filt_hz; | ||||
|             delete[] code_error_chips; | ||||
|             delete[] code_error_filt_chips; | ||||
|             delete[] CN0_SNV_dB_Hz; | ||||
|             delete[] carrier_lock_test; | ||||
|             delete[] aux1; | ||||
|             delete[] aux2; | ||||
|             delete[] PRN; | ||||
|             return 1; | ||||
|         } | ||||
|  | ||||
| @@ -414,97 +396,79 @@ int32_t glonass_l1_ca_dll_pll_c_aid_tracking_sc::save_matfile() | ||||
|     if (reinterpret_cast<int64_t *>(matfp) != nullptr) | ||||
|         { | ||||
|             size_t dims[2] = {1, static_cast<size_t>(num_epoch)}; | ||||
|             matvar = Mat_VarCreate("abs_E", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_E, 0); | ||||
|             matvar = Mat_VarCreate("abs_E", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_E.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("abs_P", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_P, 0); | ||||
|             matvar = Mat_VarCreate("abs_P", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_P.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("abs_L", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_L, 0); | ||||
|             matvar = Mat_VarCreate("abs_L", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_L.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("Prompt_I", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_I, 0); | ||||
|             matvar = Mat_VarCreate("Prompt_I", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_I.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("Prompt_Q", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_Q, 0); | ||||
|             matvar = Mat_VarCreate("Prompt_Q", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_Q.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("PRN_start_sample_count", MAT_C_UINT64, MAT_T_UINT64, 2, dims, PRN_start_sample_count, 0); | ||||
|             matvar = Mat_VarCreate("PRN_start_sample_count", MAT_C_UINT64, MAT_T_UINT64, 2, dims, PRN_start_sample_count.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("acc_carrier_phase_rad", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, acc_carrier_phase_rad, 0); | ||||
|             matvar = Mat_VarCreate("acc_carrier_phase_rad", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, acc_carrier_phase_rad.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carrier_doppler_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carrier_doppler_hz, 0); | ||||
|             matvar = Mat_VarCreate("carrier_doppler_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carrier_doppler_hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("code_freq_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_freq_chips, 0); | ||||
|             matvar = Mat_VarCreate("code_freq_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_freq_chips.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carr_error_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carr_error_hz, 0); | ||||
|             matvar = Mat_VarCreate("carr_error_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carr_error_hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carr_error_filt_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carr_error_filt_hz, 0); | ||||
|             matvar = Mat_VarCreate("carr_error_filt_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carr_error_filt_hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("code_error_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_error_chips, 0); | ||||
|             matvar = Mat_VarCreate("code_error_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_error_chips.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("code_error_filt_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_error_filt_chips, 0); | ||||
|             matvar = Mat_VarCreate("code_error_filt_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_error_filt_chips.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("CN0_SNV_dB_Hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, CN0_SNV_dB_Hz, 0); | ||||
|             matvar = Mat_VarCreate("CN0_SNV_dB_Hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, CN0_SNV_dB_Hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carrier_lock_test", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carrier_lock_test, 0); | ||||
|             matvar = Mat_VarCreate("carrier_lock_test", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carrier_lock_test.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("aux1", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux1, 0); | ||||
|             matvar = Mat_VarCreate("aux1", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux1.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("aux2", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux2, 0); | ||||
|             matvar = Mat_VarCreate("aux2", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux2.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("PRN", MAT_C_UINT32, MAT_T_UINT32, 2, dims, PRN, 0); | ||||
|             matvar = Mat_VarCreate("PRN", MAT_C_UINT32, MAT_T_UINT32, 2, dims, PRN.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|         } | ||||
|     Mat_Close(matfp); | ||||
|     delete[] abs_E; | ||||
|     delete[] abs_P; | ||||
|     delete[] abs_L; | ||||
|     delete[] Prompt_I; | ||||
|     delete[] Prompt_Q; | ||||
|     delete[] PRN_start_sample_count; | ||||
|     delete[] acc_carrier_phase_rad; | ||||
|     delete[] carrier_doppler_hz; | ||||
|     delete[] code_freq_chips; | ||||
|     delete[] carr_error_hz; | ||||
|     delete[] carr_error_filt_hz; | ||||
|     delete[] code_error_chips; | ||||
|     delete[] code_error_filt_chips; | ||||
|     delete[] CN0_SNV_dB_Hz; | ||||
|     delete[] carrier_lock_test; | ||||
|     delete[] aux1; | ||||
|     delete[] aux2; | ||||
|     delete[] PRN; | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -52,6 +52,7 @@ | ||||
| #include <memory> | ||||
| #include <sstream> | ||||
| #include <utility> | ||||
| #include <vector> | ||||
|  | ||||
|  | ||||
| #define CN0_ESTIMATION_SAMPLES 10 | ||||
| @@ -338,24 +339,24 @@ int32_t Glonass_L1_Ca_Dll_Pll_Tracking_cc::save_matfile() | ||||
|         { | ||||
|             return 1; | ||||
|         } | ||||
|     auto *abs_E = new float[num_epoch]; | ||||
|     auto *abs_P = new float[num_epoch]; | ||||
|     auto *abs_L = new float[num_epoch]; | ||||
|     auto *Prompt_I = new float[num_epoch]; | ||||
|     auto *Prompt_Q = new float[num_epoch]; | ||||
|     auto *PRN_start_sample_count = new uint64_t[num_epoch]; | ||||
|     auto *acc_carrier_phase_rad = new double[num_epoch]; | ||||
|     auto *carrier_doppler_hz = new double[num_epoch]; | ||||
|     auto *code_freq_chips = new double[num_epoch]; | ||||
|     auto *carr_error_hz = new double[num_epoch]; | ||||
|     auto *carr_error_filt_hz = new double[num_epoch]; | ||||
|     auto *code_error_chips = new double[num_epoch]; | ||||
|     auto *code_error_filt_chips = new double[num_epoch]; | ||||
|     auto *CN0_SNV_dB_Hz = new double[num_epoch]; | ||||
|     auto *carrier_lock_test = new double[num_epoch]; | ||||
|     auto *aux1 = new double[num_epoch]; | ||||
|     auto *aux2 = new double[num_epoch]; | ||||
|     auto *PRN = new uint32_t[num_epoch]; | ||||
|     auto abs_E = std::vector<float>(num_epoch); | ||||
|     auto abs_P = std::vector<float>(num_epoch); | ||||
|     auto abs_L = std::vector<float>(num_epoch); | ||||
|     auto Prompt_I = std::vector<float>(num_epoch); | ||||
|     auto Prompt_Q = std::vector<float>(num_epoch); | ||||
|     auto PRN_start_sample_count = std::vector<uint64_t>(num_epoch); | ||||
|     auto acc_carrier_phase_rad = std::vector<double>(num_epoch); | ||||
|     auto carrier_doppler_hz = std::vector<double>(num_epoch); | ||||
|     auto code_freq_chips = std::vector<double>(num_epoch); | ||||
|     auto carr_error_hz = std::vector<double>(num_epoch); | ||||
|     auto carr_error_filt_hz = std::vector<double>(num_epoch); | ||||
|     auto code_error_chips = std::vector<double>(num_epoch); | ||||
|     auto code_error_filt_chips = std::vector<double>(num_epoch); | ||||
|     auto CN0_SNV_dB_Hz = std::vector<double>(num_epoch); | ||||
|     auto carrier_lock_test = std::vector<double>(num_epoch); | ||||
|     auto aux1 = std::vector<double>(num_epoch); | ||||
|     auto aux2 = std::vector<double>(num_epoch); | ||||
|     auto PRN = std::vector<uint32_t>(num_epoch); | ||||
|  | ||||
|     try | ||||
|         { | ||||
| @@ -388,24 +389,6 @@ int32_t Glonass_L1_Ca_Dll_Pll_Tracking_cc::save_matfile() | ||||
|     catch (const std::ifstream::failure &e) | ||||
|         { | ||||
|             std::cerr << "Problem reading dump file:" << e.what() << std::endl; | ||||
|             delete[] abs_E; | ||||
|             delete[] abs_P; | ||||
|             delete[] abs_L; | ||||
|             delete[] Prompt_I; | ||||
|             delete[] Prompt_Q; | ||||
|             delete[] PRN_start_sample_count; | ||||
|             delete[] acc_carrier_phase_rad; | ||||
|             delete[] carrier_doppler_hz; | ||||
|             delete[] code_freq_chips; | ||||
|             delete[] carr_error_hz; | ||||
|             delete[] carr_error_filt_hz; | ||||
|             delete[] code_error_chips; | ||||
|             delete[] code_error_filt_chips; | ||||
|             delete[] CN0_SNV_dB_Hz; | ||||
|             delete[] carrier_lock_test; | ||||
|             delete[] aux1; | ||||
|             delete[] aux2; | ||||
|             delete[] PRN; | ||||
|             return 1; | ||||
|         } | ||||
|  | ||||
| @@ -419,97 +402,79 @@ int32_t Glonass_L1_Ca_Dll_Pll_Tracking_cc::save_matfile() | ||||
|     if (reinterpret_cast<int64_t *>(matfp) != nullptr) | ||||
|         { | ||||
|             size_t dims[2] = {1, static_cast<size_t>(num_epoch)}; | ||||
|             matvar = Mat_VarCreate("abs_E", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_E, 0); | ||||
|             matvar = Mat_VarCreate("abs_E", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_E.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("abs_P", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_P, 0); | ||||
|             matvar = Mat_VarCreate("abs_P", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_P.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("abs_L", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_L, 0); | ||||
|             matvar = Mat_VarCreate("abs_L", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_L.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("Prompt_I", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_I, 0); | ||||
|             matvar = Mat_VarCreate("Prompt_I", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_I.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("Prompt_Q", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_Q, 0); | ||||
|             matvar = Mat_VarCreate("Prompt_Q", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_Q.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("PRN_start_sample_count", MAT_C_UINT64, MAT_T_UINT64, 2, dims, PRN_start_sample_count, 0); | ||||
|             matvar = Mat_VarCreate("PRN_start_sample_count", MAT_C_UINT64, MAT_T_UINT64, 2, dims, PRN_start_sample_count.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("acc_carrier_phase_rad", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, acc_carrier_phase_rad, 0); | ||||
|             matvar = Mat_VarCreate("acc_carrier_phase_rad", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, acc_carrier_phase_rad.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carrier_doppler_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carrier_doppler_hz, 0); | ||||
|             matvar = Mat_VarCreate("carrier_doppler_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carrier_doppler_hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("code_freq_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_freq_chips, 0); | ||||
|             matvar = Mat_VarCreate("code_freq_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_freq_chips.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carr_error_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carr_error_hz, 0); | ||||
|             matvar = Mat_VarCreate("carr_error_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carr_error_hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carr_error_filt_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carr_error_filt_hz, 0); | ||||
|             matvar = Mat_VarCreate("carr_error_filt_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carr_error_filt_hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("code_error_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_error_chips, 0); | ||||
|             matvar = Mat_VarCreate("code_error_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_error_chips.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("code_error_filt_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_error_filt_chips, 0); | ||||
|             matvar = Mat_VarCreate("code_error_filt_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_error_filt_chips.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("CN0_SNV_dB_Hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, CN0_SNV_dB_Hz, 0); | ||||
|             matvar = Mat_VarCreate("CN0_SNV_dB_Hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, CN0_SNV_dB_Hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carrier_lock_test", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carrier_lock_test, 0); | ||||
|             matvar = Mat_VarCreate("carrier_lock_test", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carrier_lock_test.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("aux1", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux1, 0); | ||||
|             matvar = Mat_VarCreate("aux1", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux1.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("aux2", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux2, 0); | ||||
|             matvar = Mat_VarCreate("aux2", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux2.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("PRN", MAT_C_UINT32, MAT_T_UINT32, 2, dims, PRN, 0); | ||||
|             matvar = Mat_VarCreate("PRN", MAT_C_UINT32, MAT_T_UINT32, 2, dims, PRN.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|         } | ||||
|     Mat_Close(matfp); | ||||
|     delete[] abs_E; | ||||
|     delete[] abs_P; | ||||
|     delete[] abs_L; | ||||
|     delete[] Prompt_I; | ||||
|     delete[] Prompt_Q; | ||||
|     delete[] PRN_start_sample_count; | ||||
|     delete[] acc_carrier_phase_rad; | ||||
|     delete[] carrier_doppler_hz; | ||||
|     delete[] code_freq_chips; | ||||
|     delete[] carr_error_hz; | ||||
|     delete[] carr_error_filt_hz; | ||||
|     delete[] code_error_chips; | ||||
|     delete[] code_error_filt_chips; | ||||
|     delete[] CN0_SNV_dB_Hz; | ||||
|     delete[] carrier_lock_test; | ||||
|     delete[] aux1; | ||||
|     delete[] aux2; | ||||
|     delete[] PRN; | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -52,6 +52,7 @@ | ||||
| #include <memory> | ||||
| #include <sstream> | ||||
| #include <utility> | ||||
| #include <vector> | ||||
|  | ||||
| #define CN0_ESTIMATION_SAMPLES 10 | ||||
|  | ||||
| @@ -384,24 +385,24 @@ int32_t glonass_l2_ca_dll_pll_c_aid_tracking_cc::save_matfile() | ||||
|         { | ||||
|             return 1; | ||||
|         } | ||||
|     auto *abs_E = new float[num_epoch]; | ||||
|     auto *abs_P = new float[num_epoch]; | ||||
|     auto *abs_L = new float[num_epoch]; | ||||
|     auto *Prompt_I = new float[num_epoch]; | ||||
|     auto *Prompt_Q = new float[num_epoch]; | ||||
|     auto *PRN_start_sample_count = new uint64_t[num_epoch]; | ||||
|     auto *acc_carrier_phase_rad = new double[num_epoch]; | ||||
|     auto *carrier_doppler_hz = new double[num_epoch]; | ||||
|     auto *code_freq_chips = new double[num_epoch]; | ||||
|     auto *carr_error_hz = new double[num_epoch]; | ||||
|     auto *carr_error_filt_hz = new double[num_epoch]; | ||||
|     auto *code_error_chips = new double[num_epoch]; | ||||
|     auto *code_error_filt_chips = new double[num_epoch]; | ||||
|     auto *CN0_SNV_dB_Hz = new double[num_epoch]; | ||||
|     auto *carrier_lock_test = new double[num_epoch]; | ||||
|     auto *aux1 = new double[num_epoch]; | ||||
|     auto *aux2 = new double[num_epoch]; | ||||
|     auto *PRN = new uint32_t[num_epoch]; | ||||
|     auto abs_E = std::vector<float>(num_epoch); | ||||
|     auto abs_P = std::vector<float>(num_epoch); | ||||
|     auto abs_L = std::vector<float>(num_epoch); | ||||
|     auto Prompt_I = std::vector<float>(num_epoch); | ||||
|     auto Prompt_Q = std::vector<float>(num_epoch); | ||||
|     auto PRN_start_sample_count = std::vector<uint64_t>(num_epoch); | ||||
|     auto acc_carrier_phase_rad = std::vector<double>(num_epoch); | ||||
|     auto carrier_doppler_hz = std::vector<double>(num_epoch); | ||||
|     auto code_freq_chips = std::vector<double>(num_epoch); | ||||
|     auto carr_error_hz = std::vector<double>(num_epoch); | ||||
|     auto carr_error_filt_hz = std::vector<double>(num_epoch); | ||||
|     auto code_error_chips = std::vector<double>(num_epoch); | ||||
|     auto code_error_filt_chips = std::vector<double>(num_epoch); | ||||
|     auto CN0_SNV_dB_Hz = std::vector<double>(num_epoch); | ||||
|     auto carrier_lock_test = std::vector<double>(num_epoch); | ||||
|     auto aux1 = std::vector<double>(num_epoch); | ||||
|     auto aux2 = std::vector<double>(num_epoch); | ||||
|     auto PRN = std::vector<uint32_t>(num_epoch); | ||||
|  | ||||
|     try | ||||
|         { | ||||
| @@ -434,24 +435,6 @@ int32_t glonass_l2_ca_dll_pll_c_aid_tracking_cc::save_matfile() | ||||
|     catch (const std::ifstream::failure &e) | ||||
|         { | ||||
|             std::cerr << "Problem reading dump file:" << e.what() << std::endl; | ||||
|             delete[] abs_E; | ||||
|             delete[] abs_P; | ||||
|             delete[] abs_L; | ||||
|             delete[] Prompt_I; | ||||
|             delete[] Prompt_Q; | ||||
|             delete[] PRN_start_sample_count; | ||||
|             delete[] acc_carrier_phase_rad; | ||||
|             delete[] carrier_doppler_hz; | ||||
|             delete[] code_freq_chips; | ||||
|             delete[] carr_error_hz; | ||||
|             delete[] carr_error_filt_hz; | ||||
|             delete[] code_error_chips; | ||||
|             delete[] code_error_filt_chips; | ||||
|             delete[] CN0_SNV_dB_Hz; | ||||
|             delete[] carrier_lock_test; | ||||
|             delete[] aux1; | ||||
|             delete[] aux2; | ||||
|             delete[] PRN; | ||||
|             return 1; | ||||
|         } | ||||
|  | ||||
| @@ -465,97 +448,79 @@ int32_t glonass_l2_ca_dll_pll_c_aid_tracking_cc::save_matfile() | ||||
|     if (reinterpret_cast<int64_t *>(matfp) != nullptr) | ||||
|         { | ||||
|             size_t dims[2] = {1, static_cast<size_t>(num_epoch)}; | ||||
|             matvar = Mat_VarCreate("abs_E", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_E, 0); | ||||
|             matvar = Mat_VarCreate("abs_E", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_E.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("abs_P", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_P, 0); | ||||
|             matvar = Mat_VarCreate("abs_P", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_P.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("abs_L", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_L, 0); | ||||
|             matvar = Mat_VarCreate("abs_L", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_L.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("Prompt_I", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_I, 0); | ||||
|             matvar = Mat_VarCreate("Prompt_I", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_I.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("Prompt_Q", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_Q, 0); | ||||
|             matvar = Mat_VarCreate("Prompt_Q", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_Q.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("PRN_start_sample_count", MAT_C_UINT64, MAT_T_UINT64, 2, dims, PRN_start_sample_count, 0); | ||||
|             matvar = Mat_VarCreate("PRN_start_sample_count", MAT_C_UINT64, MAT_T_UINT64, 2, dims, PRN_start_sample_count.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("acc_carrier_phase_rad", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, acc_carrier_phase_rad, 0); | ||||
|             matvar = Mat_VarCreate("acc_carrier_phase_rad", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, acc_carrier_phase_rad.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carrier_doppler_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carrier_doppler_hz, 0); | ||||
|             matvar = Mat_VarCreate("carrier_doppler_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carrier_doppler_hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("code_freq_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_freq_chips, 0); | ||||
|             matvar = Mat_VarCreate("code_freq_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_freq_chips.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carr_error_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carr_error_hz, 0); | ||||
|             matvar = Mat_VarCreate("carr_error_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carr_error_hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carr_error_filt_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carr_error_filt_hz, 0); | ||||
|             matvar = Mat_VarCreate("carr_error_filt_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carr_error_filt_hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("code_error_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_error_chips, 0); | ||||
|             matvar = Mat_VarCreate("code_error_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_error_chips.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("code_error_filt_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_error_filt_chips, 0); | ||||
|             matvar = Mat_VarCreate("code_error_filt_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_error_filt_chips.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("CN0_SNV_dB_Hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, CN0_SNV_dB_Hz, 0); | ||||
|             matvar = Mat_VarCreate("CN0_SNV_dB_Hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, CN0_SNV_dB_Hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carrier_lock_test", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carrier_lock_test, 0); | ||||
|             matvar = Mat_VarCreate("carrier_lock_test", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carrier_lock_test.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("aux1", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux1, 0); | ||||
|             matvar = Mat_VarCreate("aux1", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux1.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("aux2", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux2, 0); | ||||
|             matvar = Mat_VarCreate("aux2", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux2.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("PRN", MAT_C_UINT32, MAT_T_UINT32, 2, dims, PRN, 0); | ||||
|             matvar = Mat_VarCreate("PRN", MAT_C_UINT32, MAT_T_UINT32, 2, dims, PRN.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|         } | ||||
|     Mat_Close(matfp); | ||||
|     delete[] abs_E; | ||||
|     delete[] abs_P; | ||||
|     delete[] abs_L; | ||||
|     delete[] Prompt_I; | ||||
|     delete[] Prompt_Q; | ||||
|     delete[] PRN_start_sample_count; | ||||
|     delete[] acc_carrier_phase_rad; | ||||
|     delete[] carrier_doppler_hz; | ||||
|     delete[] code_freq_chips; | ||||
|     delete[] carr_error_hz; | ||||
|     delete[] carr_error_filt_hz; | ||||
|     delete[] code_error_chips; | ||||
|     delete[] code_error_filt_chips; | ||||
|     delete[] CN0_SNV_dB_Hz; | ||||
|     delete[] carrier_lock_test; | ||||
|     delete[] aux1; | ||||
|     delete[] aux2; | ||||
|     delete[] PRN; | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -332,24 +332,24 @@ int32_t glonass_l2_ca_dll_pll_c_aid_tracking_sc::save_matfile() | ||||
|         { | ||||
|             return 1; | ||||
|         } | ||||
|     auto *abs_E = new float[num_epoch]; | ||||
|     auto *abs_P = new float[num_epoch]; | ||||
|     auto *abs_L = new float[num_epoch]; | ||||
|     auto *Prompt_I = new float[num_epoch]; | ||||
|     auto *Prompt_Q = new float[num_epoch]; | ||||
|     auto *PRN_start_sample_count = new uint64_t[num_epoch]; | ||||
|     auto *acc_carrier_phase_rad = new double[num_epoch]; | ||||
|     auto *carrier_doppler_hz = new double[num_epoch]; | ||||
|     auto *code_freq_chips = new double[num_epoch]; | ||||
|     auto *carr_error_hz = new double[num_epoch]; | ||||
|     auto *carr_error_filt_hz = new double[num_epoch]; | ||||
|     auto *code_error_chips = new double[num_epoch]; | ||||
|     auto *code_error_filt_chips = new double[num_epoch]; | ||||
|     auto *CN0_SNV_dB_Hz = new double[num_epoch]; | ||||
|     auto *carrier_lock_test = new double[num_epoch]; | ||||
|     auto *aux1 = new double[num_epoch]; | ||||
|     auto *aux2 = new double[num_epoch]; | ||||
|     auto *PRN = new uint32_t[num_epoch]; | ||||
|     auto abs_E = std::vector<float>(num_epoch); | ||||
|     auto abs_P = std::vector<float>(num_epoch); | ||||
|     auto abs_L = std::vector<float>(num_epoch); | ||||
|     auto Prompt_I = std::vector<float>(num_epoch); | ||||
|     auto Prompt_Q = std::vector<float>(num_epoch); | ||||
|     auto PRN_start_sample_count = std::vector<uint64_t>(num_epoch); | ||||
|     auto acc_carrier_phase_rad = std::vector<double>(num_epoch); | ||||
|     auto carrier_doppler_hz = std::vector<double>(num_epoch); | ||||
|     auto code_freq_chips = std::vector<double>(num_epoch); | ||||
|     auto carr_error_hz = std::vector<double>(num_epoch); | ||||
|     auto carr_error_filt_hz = std::vector<double>(num_epoch); | ||||
|     auto code_error_chips = std::vector<double>(num_epoch); | ||||
|     auto code_error_filt_chips = std::vector<double>(num_epoch); | ||||
|     auto CN0_SNV_dB_Hz = std::vector<double>(num_epoch); | ||||
|     auto carrier_lock_test = std::vector<double>(num_epoch); | ||||
|     auto aux1 = std::vector<double>(num_epoch); | ||||
|     auto aux2 = std::vector<double>(num_epoch); | ||||
|     auto PRN = std::vector<uint32_t>(num_epoch); | ||||
|  | ||||
|     try | ||||
|         { | ||||
| @@ -382,24 +382,6 @@ int32_t glonass_l2_ca_dll_pll_c_aid_tracking_sc::save_matfile() | ||||
|     catch (const std::ifstream::failure &e) | ||||
|         { | ||||
|             std::cerr << "Problem reading dump file:" << e.what() << std::endl; | ||||
|             delete[] abs_E; | ||||
|             delete[] abs_P; | ||||
|             delete[] abs_L; | ||||
|             delete[] Prompt_I; | ||||
|             delete[] Prompt_Q; | ||||
|             delete[] PRN_start_sample_count; | ||||
|             delete[] acc_carrier_phase_rad; | ||||
|             delete[] carrier_doppler_hz; | ||||
|             delete[] code_freq_chips; | ||||
|             delete[] carr_error_hz; | ||||
|             delete[] carr_error_filt_hz; | ||||
|             delete[] code_error_chips; | ||||
|             delete[] code_error_filt_chips; | ||||
|             delete[] CN0_SNV_dB_Hz; | ||||
|             delete[] carrier_lock_test; | ||||
|             delete[] aux1; | ||||
|             delete[] aux2; | ||||
|             delete[] PRN; | ||||
|             return 1; | ||||
|         } | ||||
|  | ||||
| @@ -413,97 +395,79 @@ int32_t glonass_l2_ca_dll_pll_c_aid_tracking_sc::save_matfile() | ||||
|     if (reinterpret_cast<int64_t *>(matfp) != nullptr) | ||||
|         { | ||||
|             size_t dims[2] = {1, static_cast<size_t>(num_epoch)}; | ||||
|             matvar = Mat_VarCreate("abs_E", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_E, 0); | ||||
|             matvar = Mat_VarCreate("abs_E", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_E.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("abs_P", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_P, 0); | ||||
|             matvar = Mat_VarCreate("abs_P", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_P.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("abs_L", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_L, 0); | ||||
|             matvar = Mat_VarCreate("abs_L", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_L.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("Prompt_I", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_I, 0); | ||||
|             matvar = Mat_VarCreate("Prompt_I", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_I.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("Prompt_Q", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_Q, 0); | ||||
|             matvar = Mat_VarCreate("Prompt_Q", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_Q.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("PRN_start_sample_count", MAT_C_UINT64, MAT_T_UINT64, 2, dims, PRN_start_sample_count, 0); | ||||
|             matvar = Mat_VarCreate("PRN_start_sample_count", MAT_C_UINT64, MAT_T_UINT64, 2, dims, PRN_start_sample_count.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("acc_carrier_phase_rad", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, acc_carrier_phase_rad, 0); | ||||
|             matvar = Mat_VarCreate("acc_carrier_phase_rad", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, acc_carrier_phase_rad.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carrier_doppler_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carrier_doppler_hz, 0); | ||||
|             matvar = Mat_VarCreate("carrier_doppler_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carrier_doppler_hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("code_freq_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_freq_chips, 0); | ||||
|             matvar = Mat_VarCreate("code_freq_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_freq_chips.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carr_error_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carr_error_hz, 0); | ||||
|             matvar = Mat_VarCreate("carr_error_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carr_error_hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carr_error_filt_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carr_error_filt_hz, 0); | ||||
|             matvar = Mat_VarCreate("carr_error_filt_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carr_error_filt_hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("code_error_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_error_chips, 0); | ||||
|             matvar = Mat_VarCreate("code_error_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_error_chips.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("code_error_filt_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_error_filt_chips, 0); | ||||
|             matvar = Mat_VarCreate("code_error_filt_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_error_filt_chips.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("CN0_SNV_dB_Hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, CN0_SNV_dB_Hz, 0); | ||||
|             matvar = Mat_VarCreate("CN0_SNV_dB_Hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, CN0_SNV_dB_Hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carrier_lock_test", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carrier_lock_test, 0); | ||||
|             matvar = Mat_VarCreate("carrier_lock_test", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carrier_lock_test.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("aux1", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux1, 0); | ||||
|             matvar = Mat_VarCreate("aux1", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux1.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("aux2", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux2, 0); | ||||
|             matvar = Mat_VarCreate("aux2", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux2.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("PRN", MAT_C_UINT32, MAT_T_UINT32, 2, dims, PRN, 0); | ||||
|             matvar = Mat_VarCreate("PRN", MAT_C_UINT32, MAT_T_UINT32, 2, dims, PRN.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|         } | ||||
|     Mat_Close(matfp); | ||||
|     delete[] abs_E; | ||||
|     delete[] abs_P; | ||||
|     delete[] abs_L; | ||||
|     delete[] Prompt_I; | ||||
|     delete[] Prompt_Q; | ||||
|     delete[] PRN_start_sample_count; | ||||
|     delete[] acc_carrier_phase_rad; | ||||
|     delete[] carrier_doppler_hz; | ||||
|     delete[] code_freq_chips; | ||||
|     delete[] carr_error_hz; | ||||
|     delete[] carr_error_filt_hz; | ||||
|     delete[] code_error_chips; | ||||
|     delete[] code_error_filt_chips; | ||||
|     delete[] CN0_SNV_dB_Hz; | ||||
|     delete[] carrier_lock_test; | ||||
|     delete[] aux1; | ||||
|     delete[] aux2; | ||||
|     delete[] PRN; | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -338,24 +338,24 @@ int32_t Glonass_L2_Ca_Dll_Pll_Tracking_cc::save_matfile() | ||||
|         { | ||||
|             return 1; | ||||
|         } | ||||
|     auto *abs_E = new float[num_epoch]; | ||||
|     auto *abs_P = new float[num_epoch]; | ||||
|     auto *abs_L = new float[num_epoch]; | ||||
|     auto *Prompt_I = new float[num_epoch]; | ||||
|     auto *Prompt_Q = new float[num_epoch]; | ||||
|     auto *PRN_start_sample_count = new uint64_t[num_epoch]; | ||||
|     auto *acc_carrier_phase_rad = new double[num_epoch]; | ||||
|     auto *carrier_doppler_hz = new double[num_epoch]; | ||||
|     auto *code_freq_chips = new double[num_epoch]; | ||||
|     auto *carr_error_hz = new double[num_epoch]; | ||||
|     auto *carr_error_filt_hz = new double[num_epoch]; | ||||
|     auto *code_error_chips = new double[num_epoch]; | ||||
|     auto *code_error_filt_chips = new double[num_epoch]; | ||||
|     auto *CN0_SNV_dB_Hz = new double[num_epoch]; | ||||
|     auto *carrier_lock_test = new double[num_epoch]; | ||||
|     auto *aux1 = new double[num_epoch]; | ||||
|     auto *aux2 = new double[num_epoch]; | ||||
|     auto *PRN = new uint32_t[num_epoch]; | ||||
|     auto abs_E = std::vector<float>(num_epoch); | ||||
|     auto abs_P = std::vector<float>(num_epoch); | ||||
|     auto abs_L = std::vector<float>(num_epoch); | ||||
|     auto Prompt_I = std::vector<float>(num_epoch); | ||||
|     auto Prompt_Q = std::vector<float>(num_epoch); | ||||
|     auto PRN_start_sample_count = std::vector<uint64_t>(num_epoch); | ||||
|     auto acc_carrier_phase_rad = std::vector<double>(num_epoch); | ||||
|     auto carrier_doppler_hz = std::vector<double>(num_epoch); | ||||
|     auto code_freq_chips = std::vector<double>(num_epoch); | ||||
|     auto carr_error_hz = std::vector<double>(num_epoch); | ||||
|     auto carr_error_filt_hz = std::vector<double>(num_epoch); | ||||
|     auto code_error_chips = std::vector<double>(num_epoch); | ||||
|     auto code_error_filt_chips = std::vector<double>(num_epoch); | ||||
|     auto CN0_SNV_dB_Hz = std::vector<double>(num_epoch); | ||||
|     auto carrier_lock_test = std::vector<double>(num_epoch); | ||||
|     auto aux1 = std::vector<double>(num_epoch); | ||||
|     auto aux2 = std::vector<double>(num_epoch); | ||||
|     auto PRN = std::vector<uint32_t>(num_epoch); | ||||
|  | ||||
|     try | ||||
|         { | ||||
| @@ -388,24 +388,6 @@ int32_t Glonass_L2_Ca_Dll_Pll_Tracking_cc::save_matfile() | ||||
|     catch (const std::ifstream::failure &e) | ||||
|         { | ||||
|             std::cerr << "Problem reading dump file:" << e.what() << std::endl; | ||||
|             delete[] abs_E; | ||||
|             delete[] abs_P; | ||||
|             delete[] abs_L; | ||||
|             delete[] Prompt_I; | ||||
|             delete[] Prompt_Q; | ||||
|             delete[] PRN_start_sample_count; | ||||
|             delete[] acc_carrier_phase_rad; | ||||
|             delete[] carrier_doppler_hz; | ||||
|             delete[] code_freq_chips; | ||||
|             delete[] carr_error_hz; | ||||
|             delete[] carr_error_filt_hz; | ||||
|             delete[] code_error_chips; | ||||
|             delete[] code_error_filt_chips; | ||||
|             delete[] CN0_SNV_dB_Hz; | ||||
|             delete[] carrier_lock_test; | ||||
|             delete[] aux1; | ||||
|             delete[] aux2; | ||||
|             delete[] PRN; | ||||
|             return 1; | ||||
|         } | ||||
|  | ||||
| @@ -419,97 +401,79 @@ int32_t Glonass_L2_Ca_Dll_Pll_Tracking_cc::save_matfile() | ||||
|     if (reinterpret_cast<int64_t *>(matfp) != nullptr) | ||||
|         { | ||||
|             size_t dims[2] = {1, static_cast<size_t>(num_epoch)}; | ||||
|             matvar = Mat_VarCreate("abs_E", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_E, 0); | ||||
|             matvar = Mat_VarCreate("abs_E", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_E.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("abs_P", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_P, 0); | ||||
|             matvar = Mat_VarCreate("abs_P", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_P.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("abs_L", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_L, 0); | ||||
|             matvar = Mat_VarCreate("abs_L", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_L.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("Prompt_I", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_I, 0); | ||||
|             matvar = Mat_VarCreate("Prompt_I", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_I.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("Prompt_Q", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_Q, 0); | ||||
|             matvar = Mat_VarCreate("Prompt_Q", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_Q.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("PRN_start_sample_count", MAT_C_UINT64, MAT_T_UINT64, 2, dims, PRN_start_sample_count, 0); | ||||
|             matvar = Mat_VarCreate("PRN_start_sample_count", MAT_C_UINT64, MAT_T_UINT64, 2, dims, PRN_start_sample_count.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("acc_carrier_phase_rad", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, acc_carrier_phase_rad, 0); | ||||
|             matvar = Mat_VarCreate("acc_carrier_phase_rad", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, acc_carrier_phase_rad.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carrier_doppler_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carrier_doppler_hz, 0); | ||||
|             matvar = Mat_VarCreate("carrier_doppler_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carrier_doppler_hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("code_freq_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_freq_chips, 0); | ||||
|             matvar = Mat_VarCreate("code_freq_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_freq_chips.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carr_error_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carr_error_hz, 0); | ||||
|             matvar = Mat_VarCreate("carr_error_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carr_error_hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carr_error_filt_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carr_error_filt_hz, 0); | ||||
|             matvar = Mat_VarCreate("carr_error_filt_hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carr_error_filt_hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("code_error_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_error_chips, 0); | ||||
|             matvar = Mat_VarCreate("code_error_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_error_chips.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("code_error_filt_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_error_filt_chips, 0); | ||||
|             matvar = Mat_VarCreate("code_error_filt_chips", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, code_error_filt_chips.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("CN0_SNV_dB_Hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, CN0_SNV_dB_Hz, 0); | ||||
|             matvar = Mat_VarCreate("CN0_SNV_dB_Hz", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, CN0_SNV_dB_Hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carrier_lock_test", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carrier_lock_test, 0); | ||||
|             matvar = Mat_VarCreate("carrier_lock_test", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, carrier_lock_test.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("aux1", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux1, 0); | ||||
|             matvar = Mat_VarCreate("aux1", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux1.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("aux2", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux2, 0); | ||||
|             matvar = Mat_VarCreate("aux2", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux2.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("PRN", MAT_C_UINT32, MAT_T_UINT32, 2, dims, PRN, 0); | ||||
|             matvar = Mat_VarCreate("PRN", MAT_C_UINT32, MAT_T_UINT32, 2, dims, PRN.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|         } | ||||
|     Mat_Close(matfp); | ||||
|     delete[] abs_E; | ||||
|     delete[] abs_P; | ||||
|     delete[] abs_L; | ||||
|     delete[] Prompt_I; | ||||
|     delete[] Prompt_Q; | ||||
|     delete[] PRN_start_sample_count; | ||||
|     delete[] acc_carrier_phase_rad; | ||||
|     delete[] carrier_doppler_hz; | ||||
|     delete[] code_freq_chips; | ||||
|     delete[] carr_error_hz; | ||||
|     delete[] carr_error_filt_hz; | ||||
|     delete[] code_error_chips; | ||||
|     delete[] code_error_filt_chips; | ||||
|     delete[] CN0_SNV_dB_Hz; | ||||
|     delete[] carrier_lock_test; | ||||
|     delete[] aux1; | ||||
|     delete[] aux2; | ||||
|     delete[] PRN; | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -54,6 +54,7 @@ | ||||
| #include <memory> | ||||
| #include <sstream> | ||||
| #include <utility> | ||||
| #include <vector> | ||||
|  | ||||
|  | ||||
| gps_l1_ca_kf_tracking_cc_sptr | ||||
| @@ -434,28 +435,28 @@ int32_t Gps_L1_Ca_Kf_Tracking_cc::save_matfile() | ||||
|         { | ||||
|             return 1; | ||||
|         } | ||||
|     auto *abs_VE = new float[num_epoch]; | ||||
|     auto *abs_E = new float[num_epoch]; | ||||
|     auto *abs_P = new float[num_epoch]; | ||||
|     auto *abs_L = new float[num_epoch]; | ||||
|     auto *abs_VL = new float[num_epoch]; | ||||
|     auto *Prompt_I = new float[num_epoch]; | ||||
|     auto *Prompt_Q = new float[num_epoch]; | ||||
|     auto *PRN_start_sample_count = new uint64_t[num_epoch]; | ||||
|     auto *acc_carrier_phase_rad = new float[num_epoch]; | ||||
|     auto *carrier_doppler_hz = new float[num_epoch]; | ||||
|     auto *carrier_dopplerrate_hz2 = new float[num_epoch]; | ||||
|     auto *code_freq_chips = new float[num_epoch]; | ||||
|     auto *carr_error_hz = new float[num_epoch]; | ||||
|     auto *carr_noise_sigma2 = new float[num_epoch]; | ||||
|     auto *carr_error_filt_hz = new float[num_epoch]; | ||||
|     auto *code_error_chips = new float[num_epoch]; | ||||
|     auto *code_error_filt_chips = new float[num_epoch]; | ||||
|     auto *CN0_SNV_dB_Hz = new float[num_epoch]; | ||||
|     auto *carrier_lock_test = new float[num_epoch]; | ||||
|     auto *aux1 = new float[num_epoch]; | ||||
|     auto *aux2 = new double[num_epoch]; | ||||
|     auto *PRN = new uint32_t[num_epoch]; | ||||
|     auto abs_VE = std::vector<float>(num_epoch); | ||||
|     auto abs_E = std::vector<float>(num_epoch); | ||||
|     auto abs_P = std::vector<float>(num_epoch); | ||||
|     auto abs_L = std::vector<float>(num_epoch); | ||||
|     auto abs_VL = std::vector<float>(num_epoch); | ||||
|     auto Prompt_I = std::vector<float>(num_epoch); | ||||
|     auto Prompt_Q = std::vector<float>(num_epoch); | ||||
|     auto PRN_start_sample_count = std::vector<uint64_t>(num_epoch); | ||||
|     auto acc_carrier_phase_rad = std::vector<float>(num_epoch); | ||||
|     auto carrier_doppler_hz = std::vector<float>(num_epoch); | ||||
|     auto carrier_dopplerrate_hz2 = std::vector<float>(num_epoch); | ||||
|     auto code_freq_chips = std::vector<float>(num_epoch); | ||||
|     auto carr_error_hz = std::vector<float>(num_epoch); | ||||
|     auto carr_noise_sigma2 = std::vector<float>(num_epoch); | ||||
|     auto carr_error_filt_hz = std::vector<float>(num_epoch); | ||||
|     auto code_error_chips = std::vector<float>(num_epoch); | ||||
|     auto code_error_filt_chips = std::vector<float>(num_epoch); | ||||
|     auto CN0_SNV_dB_Hz = std::vector<float>(num_epoch); | ||||
|     auto carrier_lock_test = std::vector<float>(num_epoch); | ||||
|     auto aux1 = std::vector<float>(num_epoch); | ||||
|     auto aux2 = std::vector<double>(num_epoch); | ||||
|     auto PRN = std::vector<int32_t>(num_epoch); | ||||
|  | ||||
|     try | ||||
|         { | ||||
| @@ -492,28 +493,6 @@ int32_t Gps_L1_Ca_Kf_Tracking_cc::save_matfile() | ||||
|     catch (const std::ifstream::failure &e) | ||||
|         { | ||||
|             std::cerr << "Problem reading dump file:" << e.what() << std::endl; | ||||
|             delete[] abs_VE; | ||||
|             delete[] abs_E; | ||||
|             delete[] abs_P; | ||||
|             delete[] abs_L; | ||||
|             delete[] abs_VL; | ||||
|             delete[] Prompt_I; | ||||
|             delete[] Prompt_Q; | ||||
|             delete[] PRN_start_sample_count; | ||||
|             delete[] acc_carrier_phase_rad; | ||||
|             delete[] carrier_doppler_hz; | ||||
|             delete[] carrier_dopplerrate_hz2; | ||||
|             delete[] code_freq_chips; | ||||
|             delete[] carr_error_hz; | ||||
|             delete[] carr_noise_sigma2; | ||||
|             delete[] carr_error_filt_hz; | ||||
|             delete[] code_error_chips; | ||||
|             delete[] code_error_filt_chips; | ||||
|             delete[] CN0_SNV_dB_Hz; | ||||
|             delete[] carrier_lock_test; | ||||
|             delete[] aux1; | ||||
|             delete[] aux2; | ||||
|             delete[] PRN; | ||||
|             return 1; | ||||
|         } | ||||
|  | ||||
| @@ -527,117 +506,95 @@ int32_t Gps_L1_Ca_Kf_Tracking_cc::save_matfile() | ||||
|     if (reinterpret_cast<int64_t *>(matfp) != nullptr) | ||||
|         { | ||||
|             size_t dims[2] = {1, static_cast<size_t>(num_epoch)}; | ||||
|             matvar = Mat_VarCreate("abs_VE", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_VE, 0); | ||||
|             matvar = Mat_VarCreate("abs_VE", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_VE.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("abs_E", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_E, 0); | ||||
|             matvar = Mat_VarCreate("abs_E", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_E.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("abs_P", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_P, 0); | ||||
|             matvar = Mat_VarCreate("abs_P", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_P.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("abs_L", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_L, 0); | ||||
|             matvar = Mat_VarCreate("abs_L", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_L.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("abs_VL", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_VL, 0); | ||||
|             matvar = Mat_VarCreate("abs_VL", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, abs_VL.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("Prompt_I", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_I, 0); | ||||
|             matvar = Mat_VarCreate("Prompt_I", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_I.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("Prompt_Q", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_Q, 0); | ||||
|             matvar = Mat_VarCreate("Prompt_Q", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, Prompt_Q.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("PRN_start_sample_count", MAT_C_UINT64, MAT_T_UINT64, 2, dims, PRN_start_sample_count, 0); | ||||
|             matvar = Mat_VarCreate("PRN_start_sample_count", MAT_C_UINT64, MAT_T_UINT64, 2, dims, PRN_start_sample_count.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("acc_carrier_phase_rad", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, acc_carrier_phase_rad, 0); | ||||
|             matvar = Mat_VarCreate("acc_carrier_phase_rad", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, acc_carrier_phase_rad.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carrier_doppler_hz", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carrier_doppler_hz, 0); | ||||
|             matvar = Mat_VarCreate("carrier_doppler_hz", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carrier_doppler_hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carrier_dopplerrate_hz2", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carrier_dopplerrate_hz2, 0); | ||||
|             matvar = Mat_VarCreate("carrier_dopplerrate_hz2", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carrier_dopplerrate_hz2.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("code_freq_chips", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, code_freq_chips, 0); | ||||
|             matvar = Mat_VarCreate("code_freq_chips", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, code_freq_chips.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carr_error_hz", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carr_error_hz, 0); | ||||
|             matvar = Mat_VarCreate("carr_error_hz", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carr_error_hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carr_noise_sigma2", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carr_noise_sigma2, 0); | ||||
|             matvar = Mat_VarCreate("carr_noise_sigma2", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carr_noise_sigma2.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carr_error_filt_hz", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carr_error_filt_hz, 0); | ||||
|             matvar = Mat_VarCreate("carr_error_filt_hz", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carr_error_filt_hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("code_error_chips", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, code_error_chips, 0); | ||||
|             matvar = Mat_VarCreate("code_error_chips", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, code_error_chips.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("code_error_filt_chips", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, code_error_filt_chips, 0); | ||||
|             matvar = Mat_VarCreate("code_error_filt_chips", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, code_error_filt_chips.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("CN0_SNV_dB_Hz", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, CN0_SNV_dB_Hz, 0); | ||||
|             matvar = Mat_VarCreate("CN0_SNV_dB_Hz", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, CN0_SNV_dB_Hz.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("carrier_lock_test", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carrier_lock_test, 0); | ||||
|             matvar = Mat_VarCreate("carrier_lock_test", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, carrier_lock_test.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("aux1", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, aux1, 0); | ||||
|             matvar = Mat_VarCreate("aux1", MAT_C_SINGLE, MAT_T_SINGLE, 2, dims, aux1.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("aux2", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux2, 0); | ||||
|             matvar = Mat_VarCreate("aux2", MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, aux2.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|  | ||||
|             matvar = Mat_VarCreate("PRN", MAT_C_UINT32, MAT_T_UINT32, 2, dims, PRN, 0); | ||||
|             matvar = Mat_VarCreate("PRN", MAT_C_UINT32, MAT_T_UINT32, 2, dims, PRN.data(), 0); | ||||
|             Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_ZLIB);  // or MAT_COMPRESSION_NONE | ||||
|             Mat_VarFree(matvar); | ||||
|         } | ||||
|     Mat_Close(matfp); | ||||
|     delete[] abs_VE; | ||||
|     delete[] abs_E; | ||||
|     delete[] abs_P; | ||||
|     delete[] abs_L; | ||||
|     delete[] abs_VL; | ||||
|     delete[] Prompt_I; | ||||
|     delete[] Prompt_Q; | ||||
|     delete[] PRN_start_sample_count; | ||||
|     delete[] acc_carrier_phase_rad; | ||||
|     delete[] carrier_doppler_hz; | ||||
|     delete[] carrier_dopplerrate_hz2; | ||||
|     delete[] code_freq_chips; | ||||
|     delete[] carr_error_hz; | ||||
|     delete[] carr_noise_sigma2; | ||||
|     delete[] carr_error_filt_hz; | ||||
|     delete[] code_error_chips; | ||||
|     delete[] code_error_filt_chips; | ||||
|     delete[] CN0_SNV_dB_Hz; | ||||
|     delete[] carrier_lock_test; | ||||
|     delete[] aux1; | ||||
|     delete[] aux2; | ||||
|     delete[] PRN; | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Carles Fernandez
					Carles Fernandez