爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 6091|回复: 12

[程序设计] matlab循环进行到第26个就进行不下去了

[复制链接]

新浪微博达人勋

发表于 2017-1-24 10:48:36 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
我在运行一个nc数据读取的程序,想要读取一年的温度日平均数据,共有365个文件。每次读取到第26个文件时,电脑就变得非常非常慢,基本进行不下去了。程序刚运行时非常快,越来越慢,这是什么问题呢?期待大家的指教
%批量读取nc文件的方法:
clc;  %清屏
clear; %清空
datadir='G:\sst1\'; %指定批量数据所在的文件夹
filelist=dir([datadir,'*.nc']); %指定批量数据的类型
a=filelist(1).name; %查看你要读取的文件的编号。filelist(1).name在window下为第一个标号数据
b=filelist(2).name; %查看你要读取的文件的编号。filelist(2).name在window下为第二个标号数据
k=length(filelist);
for s=1:k
   
   filename=[datadir,filelist(s).name];
   ncid=netcdf.open(filename,'NC_NOWRITE');
   Data  = ncread(filename,'sst4'); %读入变量sst4
   netcdf.close(ncid);   % 关闭文件
   Data_zj(:,:,s)=Data(:,:);
end;
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-1-24 21:51:36 | 显示全部楼层
你先在循环之外Data_zj=zeros(行数,列数,k)然后再执行循环会快一些。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 32430
发表于 2017-1-24 22:07:01 | 显示全部楼层
换用ncread
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-1-25 10:36:16 | 显示全部楼层
楼主真是好人。好好借鉴学习一下。想来是很有用的。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-1-25 12:16:20 | 显示全部楼层
而且matlab读的数据多的时候,虽然每次都clear,但是仍然会出现out of memory 的问题
不知道和这个有没有关系
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-2-13 08:11:05 | 显示全部楼层
weilin421 发表于 2017-1-24 21:51
你先在循环之外Data_zj=zeros(行数,列数,k)然后再执行循环会快一些。

谢谢,我试一下
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-2-13 08:12:22 | 显示全部楼层

能说得详细一点吗?程序里面读数据就是用的ncread,Data = ncread(filename,'sst4');
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-2-13 08:13:02 | 显示全部楼层
南国的佳人 发表于 2017-1-25 12:16
而且matlab读的数据多的时候,虽然每次都clear,但是仍然会出现out of memory 的问题
不知道和这个有没有 ...

应该是有关系的吧,要不怎么一开始很快,后面就速度慢了呢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-2-13 09:19:00 | 显示全部楼层
canghaiyimi 发表于 2017-2-13 08:12
能说得详细一点吗?程序里面读数据就是用的ncread,Data = ncread(filename,'sst4');

你现在用的就是ncread命令,ncid那部分没什么实际意义。 怎么用help ncread看下参考页就好了。。
进行不下去有可能是第26个文件的问题,速度慢一般是先预定义一个空数组就可以解决了。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-2-13 15:13:17 | 显示全部楼层
weilin421 发表于 2017-2-13 09:19
你现在用的就是ncread命令,ncid那部分没什么实际意义。 怎么用help ncread看下参考页就好了。。
进行不 ...

好的,我先定义一个空数组试试,谢谢你
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表