matlab - 在 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);
解决方案
您在寻找数组索引运算符(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更快!
如果您有大型数组,第二种方法会快得多,并且通常适用于数组的元素添加。
推荐阅读
- vue.js - Carrierwave:将图像从 vue front 上传到 rails api
- c# - 如何修复 Unity2D 中的错误(无法将方法组分配给隐式类型变量)
- dhall - 如何处理 dhall 中的枚举?
- asp.net-core - How to Fix "ERROR [IM002] [Microsoft][ODBC Driver Manager]" ASP.NET Core 2.2 on .NET FRAMEWORK
- raspberry-pi - 在树莓派上安装 Ravendb
- vba - 硒执行脚本
- python-3.x - How can we fix :"could not initialize a memory descriptor, in file tensorflow/core/kernels/mkl_maxpooling_op.cc:578" error while using InceptionV3?
- unity3d - 对撞机在发射时触发
- javascript - 在点击提示之前推送通知“错误注册失败 - 权限被拒绝”?
- javascript - Javascript - 控制台中的设计文本