Matlab 如何在同一绘图中索引和绘图单元格数组中的内容?
我希望有人能帮我解决这个问题 最初,我使用以下脚本为数组w和oLmag绘图Matlab 如何在同一绘图中索引和绘图单元格数组中的内容?,matlab,for-loop,Matlab,For Loop,我希望有人能帮我解决这个问题 最初,我使用以下脚本为数组w和oLmag绘图 figure(1) for i=1:dsize(1) subplot(2,1,1); semilogx(w,oLmag(i,:),color(i)); if(i==1), hold; end end 现在我已经收集了使用不同的w生成的所有oLmag,分别使用单元数组oLmag_c和w_c,使得oLmag_c{1}对应于w_c{1},依此类推。现在我想在一个图中绘制所有对应的oLmag和w hol
figure(1)
for i=1:dsize(1)
subplot(2,1,1);
semilogx(w,oLmag(i,:),color(i));
if(i==1), hold; end
end
现在我已经收集了使用不同的w生成的所有oLmag,分别使用单元数组oLmag_c和w_c,使得oLmag_c{1}对应于w_c{1},依此类推。现在我想在一个图中绘制所有对应的oLmag和w
hold all;
for i=1:dsize(1)
for k=1:length(w)
subplot(2,1,1);
semilogx(w{k},oLmag{k}(i,:),color(i));
if(i==1); hold; end
end;
end
这看起来不像是把所有的情节放在一起,只产生一个情节。另外,我想在每个情节上都有一个传说,比如1,2…说1代表w_{1}和oLmag_{1}情节等等 在第二个代码块中,hold被调用两次。一开始使用hold all,然后在循环的第一次迭代中进行第二次
if(i==1); hold; end
第二次调用hold可切换当前轴的保持状态。这可能解释了为什么你只能得到一个情节
我将改变您的方法,在开始时调用hold on或_hold(gca,'on'),并删除嵌套循环内的第二个hold调用(第二个代码块的第6行)
因此,在添加示例数据并删除第6行之后,代码块可以读取如下内容
%# First setup the axes and set 'hold on'
hAxes(1) = subplot(2,1,1)
hAxes(2) = subplot(2,1,2)
hold(hAxes,'on'); %# Using the function form of hold instead
%#hold all
%# some sample data
w={[1 2] [3 4] [4 5]};
oLmag={[22.9983 16.8412; 22.3405 16.1763], ...
[16.7192 14.0807;14.2588 11.4160], ...
[12 13;15 14]};
%# nested loops for plotting
for k=1:length(oLmag)
for i=1:length(oLmag{k})
xy=[w{k};oLmag{k}(i,:)];
subplot(2,1,1);
semilogx(w{k},oLmag{k}(i,:));
subplot(2,1,2);
%# add plots to second axes here...
%#if(i==1);hold;end; %# remove extra call to hold
end;
end
w={[12][34][45]};奥尔马格={[22.9983 16.8412;22.3405 16.1763],[16.7192 14.0807;14.2588 11.4160],[12 13;15 14]};保持(gca,'on');%为k=1保留全部:为i=1保留长度(oLmag):length(oLmag{k})xy=[w{k};oLmag{k}(i,:)];%子批次(2,1,1);半对数x(w{k},oLmag{k}(i,:),颜色(i));子批次(2,1,1);semilogx(xy,color(i));如果(i==1);持有结束;结束;end@Azim:谢谢你的回复。我在上面附上了示例值和使用的代码,以便你可以运行和查看。很抱歉,我尝试将代码缩进行中,但失败了。我应该在绘图中得到6行,w和oLmag单元格中的每个内容有2行。但这段代码只生成4行。我觉得事情不对劲。希望能收到你的来信。谢谢你可以从xy=[w{k};oLmag{k}(i,:)]行中删除冒号,看看我想画什么……谢谢@Azim:wow,这很有效。非常感谢。非常感谢你的帮助。