我怎样只能在一个图中显示几对x,y? 我尝试过在谷歌上发现的所有内容,但在所有情况下,只显示了一对有序的点x,y。
谢谢。
pws = 2000;
q0EF = 500;
EF_vec = [0.2, 0.5, 0.8, 0.9];
hold all;
for k=1:length(EF_vec)
if(EF_vec(k) <= 1)
i = 1;
clearvars y x;
for pwfi=0:100:pws
pwfp = pws - (pws - pwfi )*EF_vec(k);
y(i) = pwfp;
x(i) = q0EF * (1 - 0.2*(pwfp/pws) - 0.8*(pwfp/pws)^2 );
i = i + 1;
end
plot(x, y); % this doesnt work. This only show only the lastest x,y values
end
end
答案 0 :(得分:2)
使用hold on
在多个plot
来电的plot
上添加更多值。我看到您正在使用hold all
,但只有在打开数字时才能 。你最初没有打开数字,所以你需要这样做。因此,产生一个新的数字,使用hold on
,然后使用您的代码。将所有点作为奇点绘制也是一个好主意。 plot
默认以直线连接所有点,因此将'.'
作为第三个参数附加到其中:
pws = 2000;
q0EF = 500;
EF_vec = [0.2, 0.5, 0.8, 0.9];
figure; %// Change
hold on;
for k=1:length(EF_vec)
if(EF_vec(k) <= 1)
i = 1;
clearvars y x;
for pwfi=0:100:pws
pwfp = pws - (pws - pwfi )*EF_vec(k);
y(i) = pwfp;
x(i) = q0EF * (1 - 0.2*(pwfp/pws) - 0.8*(pwfp/pws)^2 );
i = i + 1;
end
plot(x, y, '.'); %// Change
end
end
答案 1 :(得分:0)
你可以使用plot(x,y,'x')生成一个散点图,并使用hold on绘制你应该在for循环之前打开的图。
figure;
% looops
plot(x, y, 'x');
hold on
当我使用它时你的代码可以正常工作,但你不能真正看到所有曲线,因为它们太靠近了。如果放大,你可以看到它们。
答案 2 :(得分:0)
尝试使用单元格数组
pws = 2000;
q0EF = 500;
EF_vec = [0.2, 0.5, 0.8, 0.9];
X = cell(size(EF_vec));
Y = cell(size(EF_vec));
for k=1:length(EF_vec)
if(EF_vec(k) <= 1)
i = 1;
clearvars y x;
for pwfi=0:100:pws
pwfp = pws - (pws - pwfi )*EF_vec(k);
y(i) = pwfp;
x(i) = q0EF * (1 - 0.2*(pwfp/pws) - 0.8*(pwfp/pws)^2 );
i = i + 1;
end
X{k} = x;
Y{k} = y;
end
end
X(cellfun(@isempty, X)) = [];
Y(cellfun(@isempty, Y)) = [];
plot(X{:}, Y{:});