Matlab 如何用不同的x和y向量计算两个变量的函数
我一直在尝试在matlab中计算一个函数。我希望x向量从0到1000,y向量从0到125。它们的长度都应为101。 待评估的方程式为zx,y=ay+bx,其中a=10,b=20Matlab 如何用不同的x和y向量计算两个变量的函数,matlab,for-loop,Matlab,For Loop,我一直在尝试在matlab中计算一个函数。我希望x向量从0到1000,y向量从0到125。它们的长度都应为101。 待评估的方程式为zx,y=ay+bx,其中a=10,b=20 a = 10; b = 20; n = 101; dx = 10; % Interval length dy = 1.25; x = zeros(1,n); y = zeros(1,n); z = zeros(n,n); for i = 1:n; x(i) = dx*(i-1); y(i) = dy*(
a = 10;
b = 20;
n = 101;
dx = 10; % Interval length
dy = 1.25;
x = zeros(1,n);
y = zeros(1,n);
z = zeros(n,n);
for i = 1:n;
x(i) = dx*(i-1);
y(i) = dy*(i-1);
for j = 1:n;
z(i,j) = a*dy*(j-1) + b*dx*(j-1);
end
end
我得到了一个答案,但我不知道我是否正确地使用嵌套for循环中的索引?参见MATLAB的函数
a=10;
b=20;
n=101;
x=linspace(0,1000,n);
y=linspace(0,125,n);
z=a*y+b*x;
这会更容易,并且会为您考虑间隔间距。从linspace文档中
y=linspacex1,x2,n生成n个点。点之间的间距为x2-x1/n-1
编辑:
正如其他人所指出的,我上面的解是一个向量,而不是OP想要的矩阵。正如@obchardon所指出的,您可以使用meshgrid生成由x和y点组成的二维网格,以生成z矩阵。更新的方法将是:
a=10;
b=20;
n=101;
x=linspace(0,1000,n);
y=linspace(0,125,n);
[X,Y] = meshgrid(x,y);
z=a*Y+b*X;
您可以交换x和y的顺序,这取决于您是否希望每个变量沿z的行或列增加。是否希望x沿一个矩阵维度增加,y沿另一个矩阵维度增加?如果是这样,则说明您的代码不正确。你想做席=Dx*I-1,YJ= Dy*J-1,然后Zi,j= A*YJ+B*X.用X空间创建X和Y,然后你可以使用MeHGrase: [x,y]=MeHGRIDX,y后面是z=a*y+b*x.`ObcCordon:你不再需要MeHGRID,现在有隐式单体展开。你可以写z=a*y+b*x.。。你的答案应该是向量而不是矩阵,我认为,正如@obchardon在评论中指出的,你应该使用网格网格或任何其他方法来生成所有可能的组合……网格网格不是必需的,只要写z=a*y+b*x。对于旧版本的MATLAB,您需要使用bsxfun执行以下操作。由于中间阵列较大,meshgrid的成本更高。