我是使用matlab的完全新手,如果有一种方法可以优化我的代码,我正在努力解决问题。基本上我有来自模型输出的数据,我需要使用matlab绘制它们。此外,我有参考数据(95%置信区间),我在同一图表上绘制,以了解模型输出和参考数据的接近程度。
就模型输出而言,我有几千个文件(数字顺序),我在循环和绘图中打开。我遇到的问题是,我是否可以预处理数据然后稍后绘图 - 以节省时间。我尝试这个问题时似乎遇到的问题是,我有一个不会出现或不准确的传奇。
我的代码(如果它不优雅就会道歉):
fn= xlsread(['tbobserved' '.xls']);
time= fn(:,1);
totalreference=fn(:,4);
totalreferencelowerci=fn(:,6);
totalreferenceupperci=fn(:,7);
figure
plot(time,totalrefrence,'-', time, totalreferencelowerci,'--', time, totalreferenceupperci,'--');
xlabel('Year');
ylabel('Reference incidence per 100,000 population');
title ('Total');
clickableLegend('Observed reference data', 'Totalreferencelowerci', 'Totalreferenceupperci','Location','BestOutside');
xlim([1910 1970]);
hold on
start_sim=10000;
end_sim=10005;
h = zeros (1,1000);
for i=start_sim:end_sim %is there any way of doing this earlier to save time?
a=int2str(i);
incidenceFile =strcat('result_', 'Sim', '_', a, 'I_byCal_total.xls');
est_tot=importdata(incidenceFile, '\t', 1);
cal_tot=est_tot.data;
magnitude=1;
t1=cal_tot(:,1)+1750;
totalmodel=cal_tot(:,3)+cal_tot(:,5);
h(a)=plot(t1,totalmodel);
xlim([1910 1970]);
ylim([0 500]);
hold all
clickableLegend(h(a),a,'Location','BestOutside')
end
基本上我希望有一种方法可以读取数据然后稍后绘制 - 即。优化代码。
我希望你能帮忙。
感谢。
熔点
答案 0 :(得分:2)
关于您的问题
我有一个传说要么没有 出现或不准确。
查看代码中的以下摘录。
...
h = zeros (1,1000);
...
a=int2str(i);
...
h(a)=plot(t1,totalmodel);
...
您使用字符数组作为索引。您应该使用h(a)
而不是h(i)
。 MATLAB似乎将字符数组 a
转换为double
,如以下示例所示a = 10;
。
>> double(int2str(10))
ans = 49 48
而不是h(10)
,情节句柄将被分配给h([49 48])
,这不是您的意图。