求问:matlab提示“位置 1 处的索引超出数组边界
代码如下:
```bash
clc;clear
cd('E:\')
sta_info=readtable('E:\站点.xls');
for i=1:length(sta_info.Sta)
data_in=readtable(['E:\全国气象数据\', num2str(sta_info.Sta(i)),'.csv']);
Tmax=data_in.Tmax;
Tmin=data_in.Tmin;
ts_YY=data_in.Year;
data_summ=zeros(2019-1960+1,7);
k=0;
for YY = 1960:2019
k=k+1;
Tmax_year=Tmax(ts_YY==YY,1);
Tmin_year=Tmin(ts_YY==YY,1);
[Day_HW,Day_logi]=runsTheory(Tmax_year,quantile(Tmax,0.9),3);
[Night_HW,Night_logi]=runsTheory(Tmin_year,quantile(Tmin,0.9),3);
data_summ(k,1)=YY;
if ~isempty(Day_HW)&&~isempty(Night_HW)
CDN_logi=and(logical(Day_logi),logical(Night_logi));
CDN_info=runsTheory(CDN_logi,1,3);
data_summ(k,6)=(CDN_info(1,1));
data_summ(k,7)=(CDN_info(end,2));
inde_Day_logi=Day_logi-CDN_logi;
inde_Day_info=runsTheory(inde_Day_logi,1,3);
inde_Night_logi=Night_logi-CDN_logi;
inde_Night_info=runsTheory(inde_Night_logi,1,3);
data_summ(k,2)=(inde_Day_info(1,1));
data_summ(k,3)=(inde_Day_info(end,2));
data_summ(k,4)=(inde_Night_info(1,1));
data_summ(k,5)=(inde_Night_info(end,2));
else
data_summ(k,2)=(Day_HW(1,1));
data_summ(k,3)=(Day_HW(end,2));
data_summ(k,4)=(Night_HW(1,1));
data_summ(k,5)=(Night_HW(end,2));
data_summ(k,6)=0;
data_summ(k,7)=0;
end
end
out_table=table(data_summ(:,1),data_summ(:,2),data_summ(:,3),...
data_summ(:,4),data_summ(:,5),data_summ(:,6),data_summ(:,7),'VariableNames',...
{'Year','Day_first','Day_last','Night_first','Night_last',....
'CDN_first','CDN_last'});
writetable(out_table,['E:\time\',num2str(sta_info.Sta(i)),'.csv'])
end

“Devil组”引证GPT后的撰写:
Tmax_year=Tmax(ts_YY==YY,1);
Tmin_year=Tmin(ts_YY==YY,1);
检查循环的最大值,应该是数组下标越界了,需要注意的是matlab数组下标是从1开始的