尝试计算余切时出现奇怪的错误

时间:2011-02-10 16:47:21

标签: matlab

我是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中的子表达式都不是矩阵。更令人困惑的是,如果我使用1/tan更改cot,那么它可以正常工作(无论我是否在其前面添加-符号):

Z=-cot(2*p*f*d/vp)

有什么想法吗?我已经完成了mldivide错误的谷歌搜索,但我只是没有看到它如何适用于计算余切,就像切线的倒数一样。

我在这里错过了MATLAB的特性吗?感谢。

- 编辑 -

我想我应该包含整个源代码(最初用于计算短路线路的输入阻抗,并尝试从tan-cot的开路线路的机会)< / p>

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

4 个答案:

答案 0 :(得分:3)

我猜p,f或d中的一个是矩阵,因此tan(2*p*f*d/vp)也是一个矩阵。 1 /矩阵不起作用,因为它被定义为矩阵乘法的逆矩阵,其中你对矩阵的维度有限制。

尝试

Z=-1./tan(2*p*f*d/vp)

这是元素划分。 (我认为这就是你想要的。)

答案 1 :(得分:2)

只要pfdvp都是标量,该代码就可以正常运行。因此,您的一个输入必须是非标量的。

答案 2 :(得分:2)

/符号是矩阵除法(即乘以右边的倒数),需要相同大小的数组。通常情况下,一切都适用于标量,但有时候,翻译会咳嗽,所以你必须使用./,即元素分割。

答案 3 :(得分:1)

>> p = 0.1;
>> f = 0.2;
>> d = 0.01;
>> vp =0.2;
>> Z=-1/tan(2*p*f*d/vp)

Z =

 -499.9993

似乎你正在传递一个矩阵,就像Matlab告诉你的那样。