将来自 C++ 代码的向量写入文件,然后在 MATLAB 中读取它

writing a vector from c++ code into a file and then reading it in matlab

本文关键字:然后 MATLAB 读取 文件 C++ 代码 向量 将来      更新时间:2023-10-16

我有一个在 c++ 中生成的数据类型为双精度的向量,我正在尝试将其写入文本文件,以便我可以将文本文件加载到 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(==> > Uíl ̄ 9@9ÊÝÖ(@9Ò»=£P<@ ̈CÁ

文本读取错误(第 175 行( [varargout{1:nlhs}]=dataread('file',varargin{:}(;%#ok

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

>Uíl ̄ 9@9ÊÝÖ(@9Ò»=£P<@ ̈CÁ

'

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Ð ÀÉ¿x ̈ G@Ï¿U°ÜÁ6@ò5^->@qzáme[ÀKÆ]T^'À1/47CJK@EhúôP:ÀF1/4 ̧ ý@íÀ÷3/4§ÎC@2w©^=AÀÛ«1/2ñð úr@>ò(÷@B˶xÀË6Y7 ̧@s÷ãCÀÓvÀ'F@ôuc@þÃjàÂ:À kμ Õv@ý/úÁL]Àv°¶ó+R@í æ¿¥òC@ð vwjc@WÔÙjÀ¡ @y¿ò5d®I@M ̧ö/þ ät@u000bZÝd>@Cåh0~ÀLÛoE@cÜ1/4Â¥À§ÝY.^Àù}øDzÀß H\XÀ¦ähöT~@ÍÚ\åþ Àá@Êà¤Ï»TÀAýx@r$Ü@u@Bã¿ l@ß® xç@1/2ô¶ %ÖbÀ{̱Àò#@HëSuÀ[ÙÑóÏ(w@ zû%ÀGK«7qiÀŦÊoÀúxeIÀy8nÓV@ØÕ3~yÀ³>ú¹@vc@ñáĶmÀ &Q¹ig@?klgmÀ'Ìh&ûu@J «kGiÀÂ|7kê@y- @ª ôg@ïíEY@\Ayi?S\@e Ø ̧ hã@ðô6fzÀ ©ås¬·@ROÅÍjÀÓâÒ×SJ àýßv ̈b >À(ê- ß ̧àów Ás@ûu000böÅèÀj¦Ð î@ © ÎÀ3/4&ñ~.U@_ÿz<~@qåd ø IÛz@4(Áe@:' Nu000b{à=ào ̧@ælëíVÒÀ©ÀÍûY7|XÀ¬' çä1ÀØ ®@ÁÇj@ ̈k8À ̈

有什么想法我哪里出错了吗?我对这个主题了解不多,但我假设它与尝试将数据的位置转换为字符指针有关,但我不确定也不知道如何解决这个问题,因为我尝试过用 out.write((char *) out2[i][0], N);out.write((double *) &out2[i][0], N); 之类的东西改变那行失败我现在意识到可能没有太多意义......无论如何,任何帮助将不胜感激!如果您知道如何解决此问题,请告诉我!

out << out2[i][0];

是正确的方法。

您的输出是二进制的。