关于 MATLAB 中的空矩阵的困惑?

问题描述 投票:0回答:1

我正在尝试在 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)
arrays matlab matrix
1个回答
0
投票

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 只是根据上下文以稍微不同的方式显示它们。

© www.soinside.com 2019 - 2024. All rights reserved.