我正在尝试在 MATLAB 中实现代码,系统是纯/理想积分器,并且系统没有零
我有两个困惑,
1)为什么我会得到空矩阵的两种不同类型的输出?
变量z1(位于倒数第二行代码中)具有值
[0x1 double]
和
变量 z2(位于最后一个代码行)具有值
Empty matrix: 0-by-1
2)根据我的理解,这两个输出完全相等(都是空矩阵),但是为什么 MATLAB 认为这个矩阵有 0 行和 1 列,但我没有看到任何行或任何列
我的代码:
clc;clear;close all
C=0.1e-6
R=47e3
num=1
den=[-R*C 0]
sys=tf(num,den)
[z1,p1,k]=zpkdata(sys)
[p2,z2]=pzmap(sys)
z1
和z2
都表示空矩阵,MATLAB 由于生成时的上下文而以不同方式显示它们。 z1
显示为 [0x1 double]
,因为它是 0 x 1 矩阵双精度类型。该符号明确规定了大小。 z2
显示为 Empty matrix: 0-by-1
,因为这是 MATLAB 通常表示空矩阵的方式。基本上,两个矩阵都是空的并且大小相同;它们只是以不同的格式显示。
在您的代码中,函数
zpkdata
和 pzmap
会生成 z1
和 z2
:
zpkdata
用于从传递函数获取零极点增益数据。因为您的系统是一个理想的集成商。 zpkdata
返回 z1
作为空列向量。
pzmap
是一个绘图函数,用于计算系统的极点 p2
和零点 z2
。由于您的系统没有零,因此 pzmap
返回 z2
作为空列向量。
您的理解是正确的 - 两个矩阵都是空的,MATLAB 只是根据上下文以稍微不同的方式显示它们。