首页 > 解决方案 > 在 MatLab 中使用 f[i] = x + y

问题描述

我是 Matlab 的新手,我必须做一个使用曲线积分的项目。为此,我需要从 Z0 点开始并获得 4 个其他随机点。我知道如何让它们使用randn(1)*Var&complex(x,y)但我的问题是,有没有一种方法可以定义,z[i] = Real(z) + Imag(z)*i而不必键入 Z1、Z2 等...我发现我可以使用eval(sprintf('z%d = complex(x,y)',d))但不推荐使用它。所有的建议都将受到欢迎!

clear all;
close all;

global z x y
z = x+y*1i;

%z = complex(x,y);
fun = @(z) 1./(2*pi*z);



for d = 1:4
    x = randn(1)*5;
    y = randn(1)*5;
    zr = real(z);
    zi = imag(z);
    eval(sprintf('z%d = complex(x,y)',d))
    
end

syms z(x,y) [1 4]
z0 = complex(4,0);

标签: matlabfor-loop

解决方案


您在寻找数组索引运算符(Matlab 中的括号)z_array(d) = complex(x, y)吗?

z_array = [];
for d = 1:4
    x = randn(1)*5;
    y = randn(1)*5;
    z_array(d) = x + 1i * y;    
end

或者,您可以一次性创建整个数组,而不是循环:

num_vals = 10;

x_array = randn([num_vals, 1]); % Make a 10x1 random array
y_array = randn([num_vals, 1]); % Make a 10x1 random array
z_array = x_array + 1i * y_array;

注意:z_array = complex(x_array, y_array)可能比z_array = x_array + 1i * y_array Thanks Cris更快!

如果您有大型数组,第二种方法会快得多,并且通常适用于数组的元素添加。


推荐阅读