基于matlab GUI设计的信号发生器

function signalgenerator_GUI

    % 创建 GUI
    fig = figure('Name', '信号发生器', 'NumberTitle', 'off', 'Position', [200, 200, 400, 300]);

    % 添加信号类型选择控件
    signalTypeLabel = uicontrol('Style', 'text', 'String', '信号类型:', 'Position', [50, 240, 70, 20]);
    signalTypeMenu = uicontrol('Style', 'popupmenu', 'String', {'正弦波', '方波', '三角波'}, 'Position', [120, 240, 100, 20]);

    % 添加频率设置控件
    frequencyLabel = uicontrol('Style', 'text', 'String', '频率 (Hz):', 'Position', [50, 200, 70, 20]);
    frequencyEdit = uicontrol('Style', 'edit', 'Position', [120, 200, 100, 20]);

    % 添加幅度设置控件
    amplitudeLabel = uicontrol('Style', 'text', 'String', '幅度:', 'Position', [50, 160, 70, 20]);
    amplitudeEdit = uicontrol('Style', 'edit', 'Position', [120, 160, 100, 20]);

    % 添加信号长度设置控件
    signalLengthLabel = uicontrol('Style', 'text', 'String', '信号长度:', 'Position', [50, 120, 70, 20]);
    signalLengthEdit = uicontrol('Style', 'edit', 'Position', [120, 120, 100, 20]);

    % 添加生成信号按钮
    generateButton = uicontrol('Style', 'pushbutton', 'String', '生成信号', 'Position', [150, 80, 100, 30], 'Callback', @generateButtonCallback);

    % 添加绘图区域
    axesHandle = axes('Parent', fig, 'Position', [0.2, 0.25, 0.7, 0.6]);

    % 生成信号的回调函数
    function generateButtonCallback(~, ~)
        % 获取用户选择的信号类型、频率、幅度和信号长度
        signalTypes = {'正弦波', '方波', '三角波'};
        selectedType = signalTypes{get(signalTypeMenu, 'Value')};
        frequency = str2double(get(frequencyEdit, 'String'));
        amplitude = str2double(get(amplitudeEdit, 'String'));
        signalLength = str2double(get(signalLengthEdit, 'String'));

        % 根据信号类型生成相应的信号
        switch selectedType
            case '正弦波'
                t = linspace(0, signalLength, 1000);
                signal = amplitude * sin(2 * pi * frequency * t);
            case '方波'
                t = linspace(0, signalLength, 1000);
                signal = amplitude * square(2 * pi * frequency * t);
            case '三角波'
                t = linspace(0, signalLength, 1000);
                signal = amplitude * sawtooth(2 * pi * frequency * t);
        end

        % 绘制信号
        plot(axesHandle, t, signal);
        xlabel('时间');
        ylabel('幅度');
        title(selectedType);
    end

end

运行结果如下:

 碎碎念:最近好喜欢matlab,他的功能也强大到超乎想象,希望能一直学下去!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值