使用MATLAB点表示法一次设置多个属性

时间:2015-06-25 05:19:54

标签: matlab plot

最近,MATLAB启用了绘图处理,使用点表示法来设置属性。

e.g。

set(plotLeft,'marker','o');

现在可以

plotLeft(1).Marker = 'o';

是否可以使用此新的点符号一次设置多个字段。以下是一些代码示例:

clc; clear all;
x = logspace(-3,0,100)';
plot1 = sin(x);
plot2 = cos(x);
[hax,plotLeft,plotRight] = plotyy(x,[plot1 plot1],x,[plot2 plot2])
plotLeft(1).Marker = 'o';
plotLeft(2).Marker = 'x';

我想设置这一点:

plotLeft(1).Marker = 'o';
plotLeft(2).Marker = 'x';

但是在一条线上。我可以通过以下方式访问标记类型:

plotLeft([1 2]).Marker

但是我不会让他们知道我认为它会起作用:

>> plotLeft([1 2]).Marker = ['o' 'x']
Insufficient number of outputs from function on right hand side of equal sign to
satisfy overloaded assignment.

sample plot

1 个答案:

答案 0 :(得分:6)

您可以使用deal功能来实现此目的:

[plotLeft([1 2]).Marker] = deal('o', 'x');

plotLeft([1 2]).Marker创建一个comma-separated list,因此您无法直接分配,但您可以使用交易来处理它,它将等同于:

[plotLeft(1).Marker, plotLeft(2).Marker] = deal('o', 'x');