【发布时间】:2012-11-22 08:14:26
【问题描述】:
我想知道:
假设我有一个结构:
s(1).Xval=[1 2 3];
s(2).Xval=[1 2 3 4];
s(3).Xval=[1 2 3];
s(1).Yval=[1 2 3];
s(2).Yval=[4 3 2 1];
s(3).Yval=[3 2 1];
现在我想将这三条线绘制在一个图中。我可以这样做:
plot(s(1).Xval,s(1).Yval,s(2).Xval,s(2).Yval,s(3).Xval,s(3).Yval);
这是可能的,因为 MATLAB 通过以下语法为绘图函数提供了可变数量的输入参数:
plot(X1,Y1,...,Xn,Yn)
我的问题是:有没有办法在没有预定义数量的地块的情况下调用这个函数?所以在这种情况下,我绘制了三行,但如果我不知道要绘制多少行,这种语法是否仍然可行?
我当然知道我可以通过使用Hold All 和For 循环来做到这一点。但是,我问这个是因为我想在必要时避免循环。有没有一个优雅的解决方案?还是我应该只使用循环?
编辑:索引确实有错字。 s.Xval(1) 代替 s(1).Xval
【问题讨论】:
-
查看link。希望有用
-
请注意,您的示例是错误的,因为
s.Xval在每行中必须具有相同数量的元素。s.Yval也是如此。 -
@EitanT:我怀疑应该是
s(1).Xval; s(2).Xval,等等。 -
@Jonas 我相信在这种情况下,建议的答案应该略有不同。
-
@EitanT 我不明白为什么它应该有所不同。你能详细谈谈?我假设 Johann3s 想要 plot(s(1).xVal, s(1).yVal, s(2).xVal, s(2).yVal, ...)。我的回答不会给出相同的结果吗?
标签: matlab for-loop struct plot