参考了很多别人的代码,最后实现了
矩阵大小221*5000
先是mat转txt代码
%% 将matlab数组存入txt文件中
clc
close all
clear all
% data=[2,3,4;3,4,5];
data=load('F:\HONG_SVD\DATA_juzheng\mat_pulsar\59035d03282s.mat');
data=data.py_data';
data=double(data);%原信号
% 存入txt文件中
fid=fopen('F:\HONG_SVD\SVD_CPP\testsvd_10_16\data03282.txt','w');%打开方式w 表示写入
fprintf(fid,[repmat('%2.0f\t',1,size(data,2)),'\n'],data');
fclose(fid);
% figure,imagesc(data);
生成txt效果如下图
再用C++读入txt文件,存在data中
//将03282数据导入C中
#include<iostream>
#include<fstream>
#include<typeinfo>
using namespace std;
int main()
{
const int M = 221;
const int N = 5000;
int i, j;
float **data;
data = new float *[M];
for (i = 0; i < M; i++)
{
data[i] = new float [N];
}
//float data[M][N] = { 0 };//定义一个1500*2的矩阵,用于存放数据
ifstream infile;//定义读取文件流,相对于程序来说是in
infile.open("data03282.txt");//打开文件
//ifstream in("?F:\\HONG_SVD\\MATLAB\\data.txt");
if (!infile) return 0;
for (int i = 0; i < M; i++)//定义行循环
{
for (int j = 0; j < N; j++)//定义列循环
{
infile >> data[i][j];//读取一个值(空格、制表符、换行隔开)就写入到矩阵中,行列不断循环进行
}
}
infile.close();//读取完成之后关闭文件
//cout << data[0][0] << ',' << data[0][1] << ',' << data[0][2] << endl;//以下代码是用来验证读取到的值是否正确
//cout << data[183][0] << ',' << data[183][1] << ',' << data[183][2] << endl;
//cout << typeid(data[1][0]).name() << endl;
//cout << "Hello" << endl;
system("pause");
return 0;
}
?
|