如何绘制延迟环节的n图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何绘制延迟环节的n图相关的知识,希望对你有一定的参考价值。

参考技术A 最佳回答:自动控制原理 裴润编的书中好象有 你去看一下吧 好象这个不重要 会画最小相位环节的nyquist图就差不多了 ... 参考技术B 刘胜老师自动控制原理课本题目
延迟环节的加入对原开环传递函数的幅频特性没有影响,仅对相频特性有影响。需掌握加入延迟环节后系统奈氏图的绘制,在往年真题中有考察过相同类型的题目
参考技术C MATLAB 控制系统

MATLAB中文论坛小程序已上线!请大家点击获取二维码尝试使用小程序以获得更佳用户体验
[已答复] 怎样画带延时环节的系统Nyquist图 只看楼主

1#ppb
收藏2008-3-31 16:15:04
例如
G(s)=(s+1)/(s*s+s+1),可以用matlab命令画其Nyquist图

H = tf([1 1],[1 1 1])
nyquist(H)

但G(s)=(s+1)*exp(-TS)/(s*s+s+1)的Nyquist图怎么画呢?
谢谢!

2#阿三
2008-3-31 18:47:46
加上一个延迟属性就好了,比如延迟为1

H = tf([1 1],[1 1 1],'inputdelay',1)
nyquist(H)

3#chenhao420
2010-3-24 23:26:11
请问如果非线性延迟项在传递函数的分母,如何在MATLAB的command window里画伯德图和奈奎斯特曲线。

如: G(s)=a/b, [a=s^2+s+1, b=s^2+s+e^(-2*s)]

4#anbcjys
2010-3-25 08:51:38
Nyquist是对线性系统的频域分析

5#chenhao420
2010-3-25 18:22:14
楼主的问题可以这样画
s=tf('s');
G=(s+1)*exp(-2*s)/(s*s+s+1)
nyquist (G)
然后matlab就能画出来了

但是如我上面说的如果延迟项在分母的话,
s=tf('s');
Gc=(s+1)/(s*s+s+exp(-2*s))

在matlab里无法写出传递函数
会报错
??? Error using==> ltipack.ltidata.utPlus at 24
Convert Models to state space when interconnection gives rise to internal delays

请问谁知道该怎么处理,怎么去转换非线性延迟项去state space

Java AWT如何延迟绘制对象

我想每2秒画一个新的随机形状。

我已经有一个窗口,立即显示一些形状。我试着用Timer搞定几秒钟后在窗口中出现新的东西,但它没有用,或者整个程序冻结了。使用Timer是个好主意吗?我应该如何实现它,使它工作?

import javax.swing.*;
import java.awt.*;
import java.util.Random;

class Window extends JFrame {

    Random rand = new Random();
    int x = rand.nextInt(1024);
    int y = rand.nextInt(768);
    int shape = rand.nextInt(2);

    Window(){
        setSize(1024,768);
        setVisible(true);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    public void paint(Graphics g) {
        super.paint(g);
        g.setColor(new Color(0, 52, 255));
        switch(shape) {
            case 0:
                g.fillOval(x, y, 50, 50);
                break;
            case 1:
                g.fillRect(x,y,100,100);
                break;
        }
        repaint();
    }
}

public class Main {
    public static void main(String[] args) {
        Window window = new Window();
    }
}

我还想绘制一些随机的形状。是否可以,为此目的使用油漆方法中的开关?我会做一个随机变量,如果它是1它会画矩形,如果它是2它会画椭圆等。

答案

首先,不要改变JFrame被绘制的方式(换句话说,不要覆盖paintComponent()JFrame)。创建一个JPanel的扩展类,然后绘制JPanel。其次,不要覆盖paint()方法。覆盖paintComponent()。第三,始终使用SwingUtilities.invokeLater()运行Swing应用程序,因为它们应该在自己的名为EDT(事件调度线程)的线程中运行。最后,javax.swing.Timer正是您所寻找的。

看看这个例子。它每隔1500毫米随机X,Y绘制一个椭圆形。

预习:

preview

源代码:

import java.awt.BorderLayout;
import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.Timer;

public class DrawShapes extends JFrame {
    private ShapePanel shape;

    public DrawShapes() {
        super("Random shapes");
        getContentPane().setLayout(new BorderLayout());
        getContentPane().add(shape = new ShapePanel(), BorderLayout.CENTER);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(500, 500);
        setLocationRelativeTo(null);

        initTimer();
    }

    private void initTimer() {
        Timer t = new Timer(1500, e -> {
            shape.randomizeXY();
            shape.repaint();
        });
        t.start();
    }

    public static class ShapePanel extends JPanel {
        private int x, y;

        public ShapePanel() {
            randomizeXY();
        }

        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.fillOval(x, y, 10, 10);
        }

        public void randomizeXY() {
            x = (int) (Math.random() * 500);
            y = (int) (Math.random() * 500);
        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(() -> new DrawShapes().setVisible(true));
    }
}
另一答案

首先,不要继承JFrame;相反,子类是JPanel,并将该面板放在JFrame中。其次,不要覆盖paint() - 改为覆盖paintComponent()。三,创建一个Swing Timer,并在其actionPerformed()方法中进行所需的更改,然后调用yourPanel.repaint()

以上是关于如何绘制延迟环节的n图的主要内容,如果未能解决你的问题,请参考以下文章

Labview波形图 怎么做到不把绘制出来的图像删除 直接在上面绘制新的图形

Labview波形图 怎么做到不把绘制出来的图像删除 直接在上面绘制新的图形

MATLAB如何绘制每组数量不一致柱状图

MATLAB如何绘制每组数量不一致柱状图

如何修改我的 R 代码来绘制这种甘特图?

如何在延迟着色中从灯光几何图形的内部绘制