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 如何保存修改后的三维原始文件?_Matlab_Image Processing_Import_Image Registration - Fatal编程技术网

Matlab 如何保存修改后的三维原始文件?

Matlab 如何保存修改后的三维原始文件?,matlab,image-processing,import,image-registration,Matlab,Image Processing,Import,Image Registration,我试图在Matlab中读取一个原始文件(float64,这是一个变形向量场,即图像配准的结果),3维304 x 224 x 52 然后我想用10除以这个文件中的所有值 之后,我想再次将修改后的文件保存为具有相同规范的原始文件。我写了一段代码,但无法保存文件。我想以原始格式再次保存它。我想我可能错过了什么。我是Matlab的初学者,因此我将感谢您的帮助和耐心。多谢各位 fid = fopen('I:\PatientData\patient1\out_2_to_1_us\deformationFie

我试图在Matlab中读取一个原始文件(float64,这是一个变形向量场,即图像配准的结果),3维304 x 224 x 52

然后我想用10除以这个文件中的所有值

之后,我想再次将修改后的文件保存为具有相同规范的原始文件。我写了一段代码,但无法保存文件。我想以原始格式再次保存它。我想我可能错过了什么。我是Matlab的初学者,因此我将感谢您的帮助和耐心。多谢各位

fid = fopen('I:\PatientData\patient1\out_2_to_1_us\deformationField_test.raw') dvf =     fread(fid);

length(div)
div = (0.1) * ones(42491904,1); dvf_cm = dvf.* div;

count = fwrite(fid,dvf_cm,'float64'); 
fclose(fid);

您需要以读/写模式打开文件,并在读取后将其倒带:

fid   = fopen('I:\PatientData\patient1\out_2_to_1_us\deformationField_test.raw', 'r+');
data  = fread(fid, Inf, 'float64')/10;
        frewind(fid);
count = fwrite(fid, data, 'float64'); 
        fclose(fid);

那个代码有什么问题?是否收到错误消息?看起来您正试图写入从中读取数据的同一文件。这是您的意图吗?第一个问题是,我无法将文件转换为矩阵形式,因为它是一个3D矩阵。不,我的意图是通过将所有值除以10来更改原始数据,然后将修改后的版本保存为.raw文件。我使用重塑将第一部分更改为3D矩阵输入。我使用重塑将输入文件更改为3D矩阵“重塑”。这是否正确?@Hoda内存中数据的形状对数据写入文件的方式没有影响。无论您将给出什么形状的数据,它都将按线性索引顺序写入。线性索引独立于数据的形状(即下标索引)。我编写的代码应该可以很好地用于您在问题中所述的目的。非常感谢这非常有帮助。我感谢您的帮助。@Hoda很高兴我能提供帮助。