我正在寻找这个问题的解决方案:
考虑函数f(x)= 2x + 1,其中x属于[0,1000]。绘制f的代表性曲线作为x的函数,因此如果|| f(x)|| < 3 f的代表性曲线为红色,否则表示蓝色f的曲线。
帮助我,因为我是Matlab软件的新用户
答案 0 :(得分:2)
下面的代码可以解决问题:
% Obtain an array with the desired values
y = myfunc(x);
% Get a list of indices to refer to values of y
% meeting your criteria (there are alternative ways
% to do it
indInAbs = find((abs(y)<3));
indOutAbs = find((abs(y)>=3));
% Create two arrays with y-values
% within the desired range
yInAbs = y(indInAbs);
xInAbs = x(indInAbs);
% Create two arrays with y-values
% outside the desired range
yOutAbs = y(indOutAbs);
xOutAbs = x(indOutAbs);
% Plot the values
figure(1);
hold on;
plot( xInAbs, yInAbs, 'r')
plot( xOutAbs, yOutAbs, 'b')
legend('in abs', 'out abs', 'location', 'best')
有其他方法可以提高效率和优雅。但是,这是一个快速而肮脏的解决方案。
答案 1 :(得分:0)
您的阈值不能太低,否则没有足够的数据绘制(如果阈值= 3)或无法看到蓝色部分。在这里,我使用500,你可以看到。
function plotSeparate
clc
close all
k=0
threshold=500
for x=1:0.5:1000
k=k+1
y=f(x)
if abs(y)<threshold
t(k,:)=[x,y];
else
s(k,:)=[x,y];
end
end
plot(s(:,1),s(:,2),'-r',t(:,1),t(:,2),'-b')
end
function y=f(x)
y=2*x+1;
end