运行 复杂矩阵上的 feval()
Running feval() on a complex matrix
我正在关注 Varodom Toochinda (a.k.a Dew) 的教程 here。但是我想对这段代码进行矢量化:
f = linspace(0.01, 1, 1000); // frequency vector (Hz)
w = 2 * %pi * f; // convert to rad/s
Pmag = zeros(1, 1000); Pph = zeros(1, 1000);
for k=1:1000, // compute P(jw) at each frequency point
P = 1 / (-10 * w(k)^2 + 0.1 * %i * w(k));
[Pmag(k), Pph(k)] = polar(P);
end
至
f = linspace(0.01, 1, 1000); // frequency vector (Hz)
w = 2 * %pi * f; // convert to rad/s
P = 1 ./ (-10 * w.^2 + 0.1 * %i * w);
[Pmag, Pph_rad] = feval(P, polar);
但我明白了
feval: Wrong number of output argument(s): 1 expected.
错误。如果我只尝试 feval(P, polar)
命令,我会得到
feval: Wrong type for input argument #1 : A real matrix expected.
错误信息。如果您能帮助我了解问题所在以及如何解决,我将不胜感激。
如 feval() help page 中所述(相当差,但无论如何):
f
是一个[外部](函数或例程)接受一个或两个参数,这些参数应该是真实的。
- 接受的概要是
z = feval(x,y,f)
和 z = feval(x,f)
仅支持一个输出参数t。所以,[Pmag, Pph_rad] = feval(P, polar);
不能是合法的调用。
对于您的用户案例,由于 polar
仅以非必需的矩阵方式工作,因此请避免使用它:
P = 1 ./ (-10 * w.^2 + 0.1 * %i * w);
[Pmag, Pph] = (abs(P), atan(imag(P),real(P)));
我正在关注 Varodom Toochinda (a.k.a Dew) 的教程 here。但是我想对这段代码进行矢量化:
f = linspace(0.01, 1, 1000); // frequency vector (Hz)
w = 2 * %pi * f; // convert to rad/s
Pmag = zeros(1, 1000); Pph = zeros(1, 1000);
for k=1:1000, // compute P(jw) at each frequency point
P = 1 / (-10 * w(k)^2 + 0.1 * %i * w(k));
[Pmag(k), Pph(k)] = polar(P);
end
至
f = linspace(0.01, 1, 1000); // frequency vector (Hz)
w = 2 * %pi * f; // convert to rad/s
P = 1 ./ (-10 * w.^2 + 0.1 * %i * w);
[Pmag, Pph_rad] = feval(P, polar);
但我明白了
feval: Wrong number of output argument(s): 1 expected.
错误。如果我只尝试 feval(P, polar)
命令,我会得到
feval: Wrong type for input argument #1 : A real matrix expected.
错误信息。如果您能帮助我了解问题所在以及如何解决,我将不胜感激。
如 feval() help page 中所述(相当差,但无论如何):
f
是一个[外部](函数或例程)接受一个或两个参数,这些参数应该是真实的。- 接受的概要是
z = feval(x,y,f)
和z = feval(x,f)
仅支持一个输出参数t。所以,[Pmag, Pph_rad] = feval(P, polar);
不能是合法的调用。
对于您的用户案例,由于 polar
仅以非必需的矩阵方式工作,因此请避免使用它:
P = 1 ./ (-10 * w.^2 + 0.1 * %i * w);
[Pmag, Pph] = (abs(P), atan(imag(P),real(P)));