优化下下面一段代码:lim=round(length(residuals)/10); if lim>=10 lim=10; end train_data=iddata(residuals); save_data=[]; for p=1:lim for q=1:lim num=armax(train_data,[p,q]); AIC=aic(num); save_data=[save_data:p q AIC]; reli_ts(p,q)=AIC; end end
时间: 2024-04-25 18:27:46 浏览: 127
可以尝试进行以下优化:
1. 将 lim 的计算和判断放在 iddata() 函数中,可以避免多次计算和判断。
2. 使用矢量化运算,避免使用嵌套循环。
3. 使用预分配数组,避免多次扩展数组。
优化后的代码如下:
lim = min(10, round(length(residuals) / 10));
train_data = iddata(residuals, [], []);
save_data = zeros(lim^2, 3);
reli_ts = zeros(lim);
[p, q] = meshgrid(1:lim);
pq = [p(:), q(:)];
for i = 1:size(pq, 1)
num = armax(train_data, pq(i,:));
AIC = aic(num);
save_data(i,:) = [pq(i,:), AIC];
reli_ts(pq(i,1), pq(i,2)) = AIC;
end
注:优化后的代码未经测试,如有错误请谅解。
阅读全文