Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何用不同的x和y向量计算两个变量的函数_Matlab_For Loop - Fatal编程技术网

Matlab 如何用不同的x和y向量计算两个变量的函数

Matlab 如何用不同的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*(

我一直在尝试在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*(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的成本更高。