Я попробовал 3 метода, чтобы записать структуру в файл .txt или .dat. Он записывает файл по заданному пути, но когда я открываю этот файл, он показывает только некоторые символы ASCII и не показывает структуру 1 * 1. Эти структурные переменные необходимы для доступа с использованием matlab как есть.
Мой код для C ++ ниже: —
struct packet{
int rows;
int cols;
double M;
int B;
Mat phi;
Mat y;
};
int main()
{
packet DATA[6];
DATA[1].rows=m;
DATA[2].cols=n;
DATA[3].M=M;
DATA[4].B=B;
DATA[5].phi=phi;
DATA[6].y=y;
// 1st method to write to file//
fstream binary_file("DATA.mat");
binary_file.write(reinterpret_cast<char *>(&DATA),sizeof(DATA));
binary_file.close();
// 2nd method
ofstream myfile12 ("DATA.txt");
if (myfile12.is_open())
{
myfile12 << &DATA[1]<<&DATA[2]<<&DATA[3]<<&DATA[4]<<&DATA[5]<<&DATA[6];
myfile12.close();
}
else cout << "Unable to open file";
// 3rd method//
FILE *out
outfile = fopen (DATA.dat","w");
if (outfile == NULL)
{
fprintf(stderr, "\nError opening accounts.dat\n\n");
exit
}
fwrite (&DATA, sizeof(DATA), 1, outfile);
return 0;
}
Мне нужен вывод, как этот, чтобы получить доступ к этим переменным через Matlab: —
DATA.rows=m;
DATA.cols=n;
DATA.M=M;
DATA.B=B;
DATA.phi=phi;
DATA.y=y;
Здесь значения m = 480, n = 640, M = 87, B = 16 и, используя 2-й метод, я могу записать Mat phi и y в текстовый файл.
Второй метод выдает следующий результат:
0x28f2300x28f2b80x28f3400x28f3c80x28f4500x28f4d8
1-й и 3-й метод дали результат:
lûÌo ýÌo ÿB Äñ( ìñ( ÿB üñ( $ò( à ÿB Lò( tò( ÿB „ò( ¬ò( ¸ó( ! € ! ÿB Ôò( üò( ÿB
ó( 4ó( tó( ì ) ÀU@ ÿB \ó( „ó( ÿB ”ó( ¼ó( àó( ÷( Ðö( l ÿB äó(
ô( ÿB ô( Dô( @ÿB W €[T € W €[T € W € W lô( ”ô( ÿB ¤ô( Ìô( Ã 'D
Пожалуйста, предложите мне, как я могу сохранить эти переменные в файл, а также отправить их через последовательную связь (xbee или zigbee).
Спасибо за любую помощь
Задача ещё не решена.
Других решений пока нет …