終於找到 如何在Mathematica 下讀入文件 顯示其數據爲波形

終於找到 如何在Mathematica 下讀入文件 顯示其數據爲波形

開始老是用Improt 而且我的文件也是字符串 因爲C++操作字符串方便  老是顯示不成功 因爲讀進去也是字符串 ,在MATH下 字符串轉換感覺很麻煩,試了很多次不行

後面換成二進制文件  結果就成功了 

Clear["Global`*"]   (* 清除所有變量 *)
SetDirectory[NotebookDirectory[]]  (*設置爲當前文件爲工作目錄 *)
da1 = BinaryReadList["Debug\\OutSinData.c", 
  "Integer32"];  (* 讀二進制文件爲 32位長度 *)
Length[da1]
ListPlot[da1]   (* 顯示波形 *)
da1

 

效果如下:

 

附VC 代碼:

void CVS_TSTDlg::SinOutFunc(void)
{

    CStdioFile FileIn, FileOutc, FileOuth;
    CString strFileNamec = L"..\\Debug\\OutSinData.c";
    //CString strFileNameh=L"..\\Debug\\CanProtocolxx.h":
    CString strFileTemp,strFileOutc,strFileOuth;

    UpdateData(TRUE);

    int frst = FileOutc.Open(strFileNamec,CFile::typeBinary | CFile::modeCreate | CFile::modeReadWrite, 0);   //modeWrite  typeText

    if (!frst)
    {
        m_strShow.Format(L"打開文件:%s 失敗\n",strFileNamec);
        UpdateData(FALSE);
        return;
    }

    m_strShow.Format(L"打開文件:%s 成功\n",strFileNamec);

    //int Rad=1431660000;
    int Rad=0;
    int    sindata = 0;
    int sindataA,sindataB,sindataC;
    int leng = 360;
    int *pData = (int*)malloc(leng*(4*2));  //+1  ","

    for (int i = 0; i < leng*2; i+=2)
        //for(int j=0:j<3000:j+=180)//101.19305e8
    {
        //Sin2piData[]//0-3000
        Rad-=59652300;//596523005度

        sindataA = SinDataFunc(Rad);
        //sindataB = SinDataFunc(Rad+1431655765);  //+120.0
        //sindataC = SinDataFunc(Rad+2863311530);  //+240.0


        //strFileTemp.Format(L"%d,",sindata);
        //if (i!=0 && i%15==0) strFileTemp += L"\n":
        //strFileOutc+=strFileTemp;

        pData[i]   = sindataA;
        pData[i+1] = ',';
    }

    //FileOutc.WriteString(strFileOutc);  //Write
    FileOutc.Write(pData,leng*(4+1));
    FileOutc.Close();

    free(pData);
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章