想用matlab在复平面绘制含有未知数的复函数,如f(w)=a(w)+b(w)i这种形式,但是画出来看不见曲线,对于软件给出的错误我也看不懂
以下是我的代码
k=atan((-10*w-w.^3)/(24+3*(w.^2)));
q= sqrt((9+w.^2)/(w.^2+4)*(w.^2+16));
a = q*cos(k); % 实部
b = q*sin(k); % 虚部
w_min = -100; % 最小ω值
w_max =100; % 最大ω值
% 定义f(ω)函数
f = @(w) a + b*1i;
% 绘制f(ω)函数在w_min到w_max范围内的图像
fplot(f, [w_min, w_max]);
grid on;
% % 限制x轴和y轴的范围
xlim([a-1, a+1]);
ylim([b-1, b+1]);
该回答引用GPTᴼᴾᴱᴺᴬᴵ
根据报错信息,可以看到警告信息是函数处理数组输入时行为异常,需要将函数正确向量化,以返回大小和形状与输入参数相同的输出。而在绘制图像时,xlim和ylim的范围也应该是包含递增的数值的2元素向量。
针对这个问题,可以尝试修改代码如下:
k = atan((-10*w-w.^3)/(24+3*(w.^2)));
q = sqrt((9+w.^2)/(w.^2+4)*(w.^2+16));
a = q .* cos(k); % 实部
b = q .* sin(k); % 虚部
% 定义f(ω)函数
f = @(w) a + b*1i;
% 绘制f(ω)函数在w_min到w_max范围内的图像
fplot(f, [w_min, w_max]);
grid on;
% 限制x轴和y轴的范围
xlim([a(1)-1, a(1)+1]);
ylim([b(1)-1, b(1)+1]);
这里将a和b的计算改为了使用点乘运算符.来完成向量的乘法,以实现向量化计算。另外,在xlim和ylim中需要分别取向量a和b的第一个元素,因为它们在本例中都是长度为1的向量,取任意一个元素即可。
希望这能帮助你解决问题。