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