登录论坛

查看完整版本 : 尝试计算切线时出现奇怪的错误


poster
2019-12-14, 20:13
我是MATLAB的新手,我正在尝试弄清我拥有的一些脚本。在其中一个中,我有一个用于计算短路阻抗的表达式(在其他表达式的上下文中):

Z=tan(2*p*f*d/vp) 很好,很花哨,但是当我想从切线变为负切线(对于开路)时,如下所示:

Z=-1/tan(2*p*f*d/vp) 它在该行给我一个错误,如下所示:

?? Error using ==> mldivide Matrix dimensions must agree 现在,AFAIK在计算Z时没有一个子表达式是矩阵。更令人困惑的是,如果我用cot更改1/tan ,则它起作用(与是否在其前面添加-符号无关):

Z=-cot(2*p*f*d/vp) 有任何想法吗?我已经对mldivide错误进行了谷歌搜索,但我只是看不到将其作为切线的倒数来计算余切线是如何应用的。

我在这里缺少MATLAB的特性吗?谢谢。

-编辑-

我想我应该已经包含了整个源代码(最初是为了计算短路线的输入阻抗,并尝试从tan到-cot的机会是开路线)

close all; % close all opened graphs figure; % open new graph % define distributed line parameters L=209.410e-9; % line inductance in H/m C=119.510e-12; % line capacitance in F/m vp=1/sqrt(L*C); % phase velocity Z0=sqrt(L/C); % characteristic line impedance d=0.1; % line length N=5000; % number of sampling points f=1e9+3e9*(0:N)/N; % set frequency range %Z=tan(2*pi*f*d/vp); % short circuit impedance Z= -1/tan(2*pi*f*d/vp); % open circuit impedance plot(f/1e9,abs(Z0*Z)); title('Input impedance of a short-circuit transmission line'); xlabel('Frequency {\itf}, GHz'); ylabel('Input impedance |Z|, {\Omega}'); axis([1 4 0 500]); % print -deps 'fig2_28.eps' % if uncommented -> saves a copy of plot in EPS format

回答:

我猜p,f或d之一是矩阵,所以tan(2*p*f*d/vp)也将是矩阵。 1 /矩阵将不起作用,因为它被定义为矩阵乘法的逆函数,此时您对矩阵的维数有限制。

尝试

Z=-1./tan(2*p*f*d/vp) 这是按元素划分。 (我想这就是您想要的。)



更多&回答... (https://stackoverflow.com/questions/4960043)