我是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
答案 0 :(得分:3)
我猜p,f或d中的一个是矩阵,因此tan(2*p*f*d/vp)
也是一个矩阵。 1 /矩阵不起作用,因为它被定义为矩阵乘法的逆矩阵,其中你对矩阵的维度有限制。
尝试
Z=-1./tan(2*p*f*d/vp)
这是元素划分。 (我认为这就是你想要的。)
答案 1 :(得分:2)
只要p
,f
,d
和vp
都是标量,该代码就可以正常运行。因此,您的一个输入必须是非标量的。
答案 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告诉你的那样。