【发布时间】:2011-12-24 12:27:47
【问题描述】:
有人能告诉我为什么我的一个图形(蓝色)没有显示在绘图上,而另一个(黑色)开始得太早(为了避免这种情况,我尝试将这些值设置为 NaN 并且它与红色图形一起使用)?我认为这是因为我没有正确地为黑色编写函数。我想从我提供的数据中得出 21 年的平均值,所以前 10 个对应的 x 不能在图形上有值。一个
C = textscan(fid,'%f %f %f','headerlines',32,'commentstyle','--');
x = C{1};
y1 = C{2};
y2 = C{3};
z = C{2};
sum_21mt = 0;
for i = 11:153
sum_21mt = soma_21mt + z(21);
med_21mt = soma_21mt/21;
end
y1(y1==-99.99) = NaN;
y2(y2==-99.99) = NaN;
z1 = z(1:10);
z2 = z(154:length(z));
z1 = NaN;
z2 = NaN;
plot(x, y1, 'b-', x, y2, 'r-', x, z, 'k-');
【问题讨论】:
-
能否请您提供 x、y1、y2 和 z 的姓名?
-
这里
z1和z2的目的是什么? -
此外,您确实意识到,由于您没有在循环中修改
soma_21mt并且循环根本不依赖于i,因此循环要么是完全冗余的(您是基本上是在做x=1+2一百万次),或者循环没有做你想做的事情? -
我是 matlab 新手。其中谁是 131x1 1048 双。是的,我现在的目标并没有做我真正想做的事情。我有一列有年份,另一列有某些值。我想制作一个平均为 21 年的图形,所以不能考虑第一个和最后 10 个值,因此是 NaN。
-
我已将循环更改为: for i = y1(11): y1(121);对于 j = i-10:i+10; media_21tm = 平均值 (j); end end 但现在我得到一堆水平排列的黑点