Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.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
Image 将SAR图像mat转换为csv图像_Image_Matlab_Image Processing - Fatal编程技术网

Image 将SAR图像mat转换为csv图像

Image 将SAR图像mat转换为csv图像,image,matlab,image-processing,Image,Matlab,Image Processing,我有一个SAR图像mat文件,图像大小是512x512x8。我需要将mat文件转换为8个单独的csv格式文件。每个csv格式文件的输出大小应为512x512 如何转换图像格式?我假设要写出的3D数组是复数的。这里有一个简单的函数,它可以将3D复杂数组的每个片段以全精度(即一吨小数位)写入两个CSV文件,用于实部和虚部 这将输出16个CSV文件,每个文件8.3MB,总计132.8MB。(原来的二进制数组只有32MB,而ASCII数字对磁盘空间来说是残酷的。) 因为所有小数位都是打印出来的,所以您应

我有一个SAR图像mat文件,图像大小是512x512x8。我需要将mat文件转换为8个单独的csv格式文件。每个csv格式文件的输出大小应为512x512


如何转换图像格式?

我假设要写出的3D数组是复数的。这里有一个简单的函数,它可以将3D复杂数组的每个片段以全精度(即一吨小数位)写入两个CSV文件,用于实部和虚部

这将输出16个CSV文件,每个文件8.3MB,总计132.8MB。(原来的二进制数组只有32MB,而ASCII数字对磁盘空间来说是残酷的。)


因为所有小数位都是打印出来的,所以您应该能够
dlmread
这样的文本文件,并获得原始数据的位精确副本(对于任何数据存档系统,这总是一个加号我假设要写入的3D数组是复数值的。下面是一个简单的函数,它可以将3D复数数组的每个片段以全精度(即大量小数点)写入两个CSV文件,用于实部和虚部

这将输出16个CSV文件,每个文件8.3MB,总共132.8MB。(原始二进制数组只有32MB,数字ASCII对于磁盘空间来说是残酷的。)


因为所有小数位都是打印出来的,所以您应该能够
dlmread
这样的文本文件,并获得原始数据的位精确副本(对于任何数据存档系统,最终结果都是512x512 cvs imageRaw数据是复数还是实数?最终结果应该是512x512 cvs imageRaw数据是复数还是实数?谢谢。这个答案非常接近理想结果。但我的3D数组不是复数。我只想分解第三个方向,即8给定的函数,
complex2csv
如果输入仅为实,则不会为虚组件创建文件,因此您可以完全按照演示的方式使用它。有两个问题。首先,运行时出错。未定义的函数“iscomplex”用于“double”类型的输入参数。其次,我如何读取.mat文件将测试数据作为论据?谢谢you@Alice我搞砸了,
isreal
是标准的Matlab,
iscomplex
并没有解决这个问题。另外,如果您已经保存了一个MAT文件,并且希望在其中转换一个变量,只需执行
load mymat.MAT;complex2csv('mymat',随便什么)
。我讨厌使用裸
加载
,但是,更新后的答案显示了我将如何使用
加载
返回结构。谢谢。这个答案非常接近理想的结果。但是我的3D数组不是一个复杂的值。我只想分解第三个方向,即8给定的函数,
complex2csv
如果输入仅为实,则为虚组件创建文件,以便您可以完全按照演示的方式使用它。两个问题。首先,运行时出错。对于类型为“double”的输入参数,未定义的函数“iscomplex”。其次,我如何将.mat文件作为testData读取为参数?谢谢you@Alice我搞砸了,
isreal
是标准的Matlab,
iscomplex
并没有解决这个问题。另外,如果您已经保存了一个MAT文件,并且希望在其中转换一个变量,只需执行
load mymat.MAT;complex2csv('mymat',随便什么)
。不过,我讨厌使用裸
加载
,因此更新后的答案显示了如何使用
加载
返回结构。
function complex2csv(basename, arr)
%COMPLEX2CSV writes the slices of a 3D complex array to two CSV files each.
%
%  COMPLEX2CSV(BASENAME, ARR) for a string BASENAME and 3D complex array ARR
%  writes each 3D slice of ARR to two ASCII comma-separated value (CSV) files,
%  one for the real and one for the imaginary component.
%
%  The format for file names is: '<BASENAME>-<slice number>-<REAL or IMAG>.csv'.
%
%  If ISREAL(ARR) is true, the second set of files (for imaginary
%  components) will not be created, since it would be filled with zeros.

dlmwrapper = @(filename, data) dlmwrite(filename, ...
                                        data, ...
                                        'precision', '%0.30g');

for i = 1 : size(arr, 3)
  dlmwrapper(sprintf('%s-%d-REAL.csv', basename, i), real(arr(:, :, i)));

  % Only write imaginary if it is there.
  if ~isreal(arr)
    dlmwrapper(sprintf('%s-%d-IMAG.csv', basename, i), imag(arr(:, :, i)));
  end
end
>> testData = randn(512, 512, 8) + 1j*randn(512, 512, 8);
>> complex2csv('test-image', testData)