24小时热门版块排行榜    

查看: 2232  |  回复: 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的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

感谢参与,应助指数 +1
问题出在你的自定义函数里面,贴出函数代码看看
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
2楼2013-06-24 17:47:01
已阅   回复此楼   关注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的回帖

libralibra

至尊木虫 (著名写手)

骠骑将军

【答案】应助回帖

arcgridwrite这个函数也不是内置的
另外可以在子函数中加输出,看看到底哪一步出问题了
matlab/VB/python/c++/Java写程序请发QQ邮件:790404545@qq.com
4楼2013-06-25 16:16:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sdlwlgh

新虫 (初入文坛)

求助,现在处理了一批数据,按照x,y,z的形式保存在矩阵里,想要把矩阵里的数据保存成.asc,跟你这个有点相似啊,请问你的问题解决了吗
5楼2017-11-06 18:40:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 弘微 的主题更新
信息提示
请填处理意见