将c ++代码中的向量写入文件,然后在matlab中读取它

时间:2015-02-09 17:38:31

标签: c++ matlab

我有一个用c ++生成的数据类型double的向量,我正在尝试将其写入文本文件,以便我可以将文本文件加载到matlab中,以便绘制来自向量的数据与已经存在的数据在我的matlab工作区中。我能够创建一个名为real_data2.txt的文件,程序运行没有错误,但是当我尝试在Matlab中加载文件或在文本阅读器中打开它时,文件的内容是乱码的,所以 - 说话。我用来创建文件的代码是:

ofstream out("real_data2.txt");
    if(!out){
        cout << "Cannot open file.\n";
        return;
    }
for(int i = 0; i<N; i++){
    out.write((char *) &out2[i][0], N);
}
out.close();

其中N是out2的长度。这成功生成了'real_data2.txt'文件。然后我将生成的文件放入matlab路径并在matlab中使用A = textread('real_data2.txt')来尝试读取文件。我收到的错误消息是:

  

使用数据读取时出错   无法从文件中读取数字(第1行,第1行)==&gt;   &GT; Uíl¯9@9ÊÝÖ(@ 90»£= P&LT; @ CA \ n

     

textread错误(第175行)   [varargout {1:nlhs}] = DATAREAD( '文件',varargin {:}); %#确定

当我双击txt文件时,我得到一个包含以下文本的文件:

&GT;Uíl¯9@9ÊÝÖ(@ 90»£= P&LT; @ CA

  

'C@Bw|N¯8@]H~=@7@7ÂÙjóõ?ñXéWSO@¹U¥A°õ¿»D¾;@@¡ԨÊëQÀw®nr!úU@ß7XÀjw©}NÀJA(×FÀ|ûó>%÷GÀa¬W¯7@·âÖ3ÐÀÉ¿ XG @Ï¿U°UA6 @ O5 ^ - &GT; @qzáme[AKAE] T 1' À¼7CJK@EhúôP:ÀF¼¸ý@ IA÷¾§ÎC @ 2w©^ =AÀÛ«½ñðúr@&gt;ò(÷@B˶xÀË6Y7¸@ s÷ãCÀ&lt;μ} lÀ<uÄòÚtÀêGÂ0KZÀ~iò*~@$áu@Àq>¢ÒE{@Õbp«^8DÀ4©@Ëçc@nê'È1ÀÑJ5|@$éEyÀUßÎzí@,u°&lt;ä@ ^Q4íbÀ4õÆÚ@ 6S8(*ÀD$°ä ?ü@ KN |½Àz   &gt;ÓvÀ'F@ôuc@þÃjà:ÀKμÕv@ý/úÁL]Àv°¶ó+ R @íæ¿¥òC@ðvwjc@WÔÙjÀ¡@yòò5d®I@M¸ö/þät@ZÝd&gt; @Cåh0 〜ÀLÛoE@cܼ¥§ÝY.^À¹}øDzÀß®H\XÀ|hhöT~@ÍÚ\åþÀá@Êà¤Ï»TÀAýx@ r $Ü@ u @Bã¿l@ß   xç@½ô¶%ÖbÀ{̱Àò#@HëSuÀ[ÙÑóÏ] w @zû%ÀGK«7qiÀÅ|ÊoÀúxeIÀy8nÓV@ØÕ3~yÀ³&gt;ú¹@ vc @ñáĶmÀ&amp;Q¹ig@?klgmÀ`Ìh&amp;ûu@ J« kGiÀ|7kê@ y - @ªôg@ïíEY@ \ Ayi?S \ @eظhã@ðô6fzÀ   ©ås¬·@ROÅÍjÀÓâÒ×SJÀýßv¨b   &gt;À(Ê-߸ÀówÁs@ûöÅèÀj|Ðî@©   ÎÀ¾&安培;ñ~.U@_ÿz<〜@qådøIÛz@ 4)AE @:'N {A = AO @ÆlëíVÒÀ©ÀÍûY7|XÀ¬”Çä1ÀØ@ ACJ @®¨k8À¨

我出错的任何想法?我不太了解这个主题,但我假设它与尝试将数据的位置转换为char指针有关,但我不确定,也不知道如何解决这个问题,因为我尝试用out.write((char *) out2[i][0], N);out.write((double *) &out2[i][0], N);之类的东西改变那条线是不成功的,我意识到现在可能没有多大意义......无论如何,任何帮助都会非常感激!如果您知道如何解决此问题,请告诉我们!

1 个答案:

答案 0 :(得分:0)

out << out2[i][0];

是正确的方法。

您的输出是二进制。