24小时热门版块排行榜    

查看: 2233  |  回复: 4
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

弘微

新虫 (初入文坛)

[求助] matlab如何以循环语句形式将三维数组存储成多个asc格式的文件

各位大神,我遇到个问题,想将一个三维数组(20*35*16)以循环语句的形式存储成多个二维数组(就是存储成16个20*35的矩阵)的asc格式文件,如何才能实现,请知道的帮个忙,谢谢!
以下是我写的一个小程序,但陷入了死循环。
T=TDEx;  %TDEx是20行35列16页的三维数组
n=size(T,3);
for ii=1:n
    b{ii}=T(:,:,ii);
    xll=20.5; yll=137.5; cellsize=0.004; NODATA_value=-9999;
    ascWrite('b{ii}.asc',xll,yll,cellsize,NODATA_value,b{ii});
end
其中,ascWrite是自定义的函数
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

弘微

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by libralibra at 2013-06-24 17:47:01
问题出在你的自定义函数里面,贴出函数代码看看

网上的代码,直接用了
function ascWrite(fileName, xllcorner, yllcorner, cellsize, NODATA_value, Z)
%存储为asc文件
%   Example:
%     Z = peaks(100);
%     Z(Z < 0.5)=-3721;
%     xllcorner = 10; yllcorner = -4; cellsize = 0.5; NODATA_value = -3721;
%     ascWrite('testWriteasc.asc', xllcorner, yllcorner, cellsize, NODATA_value, Z);

%     全球  
%     xllcorner = -180; yllcorner = -80; cellsize = 0.5; NODATA_value = -3721;

%%
    [nx,ny] = size(Z);
    x1 = xllcorner:cellsize:xllcorner+(nx-1)*cellsize;
    y1 = yllcorner:cellsize:yllcorner+(ny-1)*cellsize;
    [xx, yy] = meshgrid(x1,y1);
    Z(Z == NODATA_value) = NaN;
    arcgridwrite(fileName, xx, yy, Z);
3楼2013-06-25 15:44:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 弘微 的主题更新
信息提示
请填处理意见