发布网友 发布时间:2022-04-27 08:09
共1个回答
热心网友 时间:2022-06-28 22:18
摘要解决方案1:矢量化计算和直接绘图我认为你打算画一条连续线。在这种情况下,不需要for循环,因为您可以直接在MATLAB中计算和绘制矢量。所以下面的代码可能就是你想要的:x = linspace(0,2*pi,100);y = sin(x);plot(x,y);请注意,y是一个向量和x,而y(n)对于所有sin(x(n))都等于n。如果您想绘制点本身,请在调用plot时使用LineSpec - 语法,如此 1 :plot(x,y,'*');1)其他类型的点也是可能的,请参阅上面的链接文档。咨询记录 · 回答于2021-11-23在matlab中使用for循环计算并绘制【-3,7】范围内的分段曲线解决方案1:矢量化计算和直接绘图我认为你打算画一条连续线。在这种情况下,不需要for循环,因为您可以直接在MATLAB中计算和绘制矢量。所以下面的代码可能就是你想要的:x = linspace(0,2*pi,100);y = sin(x);plot(x,y);请注意,y是一个向量和x,而y(n)对于所有sin(x(n))都等于n。如果您想绘制点本身,请在调用plot时使用LineSpec - 语法,如此 1 :plot(x,y,'*');1)其他类型的点也是可能的,请参阅上面的链接文档。如果要在添加数据时绘制曲线,请尝试以下操作:x = linspace(0,2 * pi, 100);y = zeros(size(x));for i=1:numel(x) y(i) = sin(x(i)); plot(x(1:i), y(1:i), 'color', 'r') drawnow();end请注意,绘图会自动尝试设置x和y*(曲线缩放到绘图窗口),以防止必须使用xlim和{{手动设置x和y*1}}。Matt在他的回答中写道,在每次迭代中调用ylim都非常昂贵(即耗时)。因此我建议使用数据源:使用数据源更新图表plot在每次迭代中对% Create a panel and axes object h_panel = uipanel; h_axes = axes( 'Parent', h_panel); % Create data sources x = linspace(0,2 * pi, 100); y = zeros(size(x)); % Create graph object, in this case stairs % and bind the variables x and y as its data sources h_stairs = stairs(h_axes, x, y, 'XDataSource', 'x', 'YDataSource', 'y'); for i=1:size(x) y(i) = sin(x(i)); % Update the data of the stairs graph refreshdata(h_stairs); drawnow(); end 的调用都不是必需的,它仅用于更新视觉效果,因此您可以直接看到更改。感觉有点不对呀图像x=0的时候 函数值是1呀 但图像上不是欸clear;clcdx=35/300;x=-5:dx:30;for k=1:length(x) if x(k)>=9 y(k)=15*sqrt(4*x(k))+10; elseif x(k)>=0 y(k)=10*x(k)+10; %应该是x(k) else y(k)=10; endendplot(x,y);xlabel('x');ylabel('y')也不对呀 这次输入完连图像都没有[流泪]嗯