Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab到C++;读取hgt文件 我试图翻译一个MATLAB代码,它读取一个HGT文件到C++,我是这样来的。但是,我没有按列和行读取文件,而是想知道是否有任何方法可以使用fread更快地获得所需的值。matlab代码如下所示: % ilat and ilon, both vectors, already calculated % Calculate the offset to each point offset = ilon*nbytes_per_lon + ilat*2; % Read the database path_data = zeros(size(path_lon)); for i = 1:length(path_lon); status = fseek(fid, offset(i), 'bof'); path_data(i)=fread(fid,[1],'integer*2'); end 我的C++代码看起来像这样: for (i = 0; i < path_lon.size(); i++) { offset[i] = ilon[i] * nbytes_per_lon + ilat[i] * 2; fseek(pFile, offset[i], SEEK_SET); // SEEK_SET == bof path_data[i] = fread(buffer, 2, 1, pFile); } (i=0;i返回成功读取的对象数,而不是读取的数据。结果在缓冲区。谢谢你们两位,但是我已经离开了直接翻译,我试图迭代HGT文件,只读取我想要的值。更新了上面的代码以反映我的更改。为什么期望不同的值?阅读代码时,我希望两者都包含(memblock[0]_C++_Matlab - Fatal编程技术网

Matlab到C++;读取hgt文件 我试图翻译一个MATLAB代码,它读取一个HGT文件到C++,我是这样来的。但是,我没有按列和行读取文件,而是想知道是否有任何方法可以使用fread更快地获得所需的值。matlab代码如下所示: % ilat and ilon, both vectors, already calculated % Calculate the offset to each point offset = ilon*nbytes_per_lon + ilat*2; % Read the database path_data = zeros(size(path_lon)); for i = 1:length(path_lon); status = fseek(fid, offset(i), 'bof'); path_data(i)=fread(fid,[1],'integer*2'); end 我的C++代码看起来像这样: for (i = 0; i < path_lon.size(); i++) { offset[i] = ilon[i] * nbytes_per_lon + ilat[i] * 2; fseek(pFile, offset[i], SEEK_SET); // SEEK_SET == bof path_data[i] = fread(buffer, 2, 1, pFile); } (i=0;i返回成功读取的对象数,而不是读取的数据。结果在缓冲区。谢谢你们两位,但是我已经离开了直接翻译,我试图迭代HGT文件,只读取我想要的值。更新了上面的代码以反映我的更改。为什么期望不同的值?阅读代码时,我希望两者都包含(memblock[0]

Matlab到C++;读取hgt文件 我试图翻译一个MATLAB代码,它读取一个HGT文件到C++,我是这样来的。但是,我没有按列和行读取文件,而是想知道是否有任何方法可以使用fread更快地获得所需的值。matlab代码如下所示: % ilat and ilon, both vectors, already calculated % Calculate the offset to each point offset = ilon*nbytes_per_lon + ilat*2; % Read the database path_data = zeros(size(path_lon)); for i = 1:length(path_lon); status = fseek(fid, offset(i), 'bof'); path_data(i)=fread(fid,[1],'integer*2'); end 我的C++代码看起来像这样: for (i = 0; i < path_lon.size(); i++) { offset[i] = ilon[i] * nbytes_per_lon + ilat[i] * 2; fseek(pFile, offset[i], SEEK_SET); // SEEK_SET == bof path_data[i] = fread(buffer, 2, 1, pFile); } (i=0;i返回成功读取的对象数,而不是读取的数据。结果在缓冲区。谢谢你们两位,但是我已经离开了直接翻译,我试图迭代HGT文件,只读取我想要的值。更新了上面的代码以反映我的更改。为什么期望不同的值?阅读代码时,我希望两者都包含(memblock[0],c++,matlab,C++,Matlab,编辑:我不再使用直接翻译,而是尝试使用链接资源来迭代hgt文件并获得我想要的值。以下是我的测试代码: std::ifstream::pos_type size = 2; char* memblock = new char[size]; if(!file) { std::cout << "Error opening file!" << std::endl; return -1; } for (int i = 0; i < SRTM_SIZE; i

编辑:我不再使用直接翻译,而是尝试使用链接资源来迭代hgt文件并获得我想要的值。以下是我的测试代码:

std::ifstream::pos_type size = 2;
char* memblock = new char[size];

if(!file) {
    std::cout << "Error opening file!" << std::endl;
    return -1;
}


for (int i = 0; i < SRTM_SIZE; i++) {
    for (int j = 0; j < SRTM_SIZE; j++) {
        height[i][j] = (memblock[0] << 8) | memblock[1];
    }
}


file.seekg(0, std::ios::beg);
file.read(memblock, size);
std::cout << "height at [5][5]: " << height[5][5] << std::endl;
std::cout << "height at [10][10]: " << height[10][10] << std::endl;
std::ifstream::pos_type size=2;
char*memblock=新字符[大小];
如果(!文件){

STD:这样调用FLAAD,它不是总是写入缓冲区中的第一个位置吗?如果这里的任何C++程序员都尝试理解MATLAB代码,FSETK和偏移量计算应该是清楚的。FLADAD调用意味着“读取一个有符号的16位整数”。不确定Frad的C++调用是否相同。< Fordad:/Frase>返回成功读取的对象数,而不是读取的数据。结果在<代码>缓冲区。谢谢你们两位,但是我已经离开了直接翻译,我试图迭代HGT文件,只读取我想要的值。更新了上面的代码以反映我的更改。为什么期望不同的值?阅读代码时,我希望两者都包含
(memblock[0]