終於找到 如何在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);
}