MATLAB - 如何使用负指数数组绘制一个函数?
问题描述:
我试图找出这种盗版编程语言,但继续陷入这样的事情。MATLAB - 如何使用负指数数组绘制一个函数?
我的代码如下:
clc;
clear;
for i = -3:6;
x(i) = i;
y(i) = (i^4)-(4*(i^3))-(6*(i^2))+15; %being my given function
end
plot(x,y)
它的工作原理,如果我从1开始,因为它是一个正整数。它不能访问零值或负值。我该如何解决这个问题?
编辑:感谢您的迅速回应你们,我喜欢你的方法,并肯定要接近它不同的方式,但在我的文字的要求之一是使用for循环,可悲的是
答
你可以即使没有for循环也要这样做。
x = -3:6;
y = (x.^4)-(4*(x.^3))-(6*(x.^2))+15;
如果使用Matlab没有循环,Matlab会更有效。对于你这种小范围的情况,它不会产生任何效果,但如果你想要更多元素,可以使用这种方法提高代码的速度。
回答你原来的问题。问题是您正在使用基于索引的向量访问。而在Matlab向量的第一个元素与索引1
您进行修改并使用for循环,你可以用这种方法
x = -3:6;
y = zeros(1, length(x));
% initialization prevents the vector size being changed in every iteration
for i = 1:length(x)
y = (x(i)^4)-(4*(x(i)^3))-(6*(x(i)^2))+15;
end
答
既然你不能访问与负数组元素的需求定义您需要使用与i
不同的变量来跟踪x
和y
中的每个元素;这个新变量应该从1开始,并在每次循环迭代时递增。
但你甚至不需要担心管理,你可以简单地分配给-3:6
和x
使用x
作为数组计算你的函数:
clc;
clear;
x = -3:6;
y = (x.^4)-(4*(x.^3))-(6*(x.^2))+15;
plot(x,y)
然而,这将产生一个看起来有点锯齿状的曲线图。如果你想x
包含更多的积分,你可以使用linspace()
代替:
clc;
clear;
x = linspace(-3, 6); % (similar to -3:0.09:6)
y = (x.^4)-(4*(x.^3))-(6*(x.^2))+15;
plot(x,y)
如果你真的想用一个循环,更换'X(I)'和'X(I + 4)'和'Y( i)''与'y(i + 4)'并考虑使用除[*'i'(和'j')*]之外的其他变量(https://stackoverflow.com/questions/14790740/using-i-and -j-as-variables-in-matlab) –
[在Matlab中使用for循环绘制方程]的可能副本(https://stackoverflow.com/questions/37692453/plotting-equation-in-matlab-using-for-loop ) – frslm