【问题标题】:Play the sound when click the pushbutton in matlab GUI在matlab GUI中单击按钮时播放声音
【发布时间】:2014-05-12 04:31:58
【问题描述】:

单击 GUI matlab 中的按钮后,我正在尝试与音频图上的移动线同步播放音频。上述任务的代码是

  fs = 44100;
durT = 3; %seconds
durS = fs*durT; %samples
x = randn(durS, 1);

dt = 1/fs;
tAxis = dt:dt:durT;

frameRate = 25; %fps
frameT = 1/frameRate;

mag = 5;

figure;
plot(tAxis, x);
ylim([-mag mag])
xlim([0 durT])
xlabel('Time [s]')

playHeadLoc = 0;
hold on; ax = plot([playHeadLoc playHeadLoc], [-mag mag], 'r', 'LineWidth', 2);

player = audioplayer(x, fs);
myStruct.playHeadLoc = playHeadLoc;
myStruct.frameT = frameT;
myStruct.ax = ax;

set(player, 'UserData', myStruct);
set(player, 'TimerFcn', @apCallback);
set(player, 'TimerPeriod', frameT);
play(player);

回调函数是

function src = apCallback(src, eventdata)
    myStruct = get(src, 'UserData'); %//Unwrap

    newPlayHeadLoc = ...
        myStruct.playHeadLoc + ...
        myStruct.frameT;
    set(myStruct.ax, 'Xdata', [newPlayHeadLoc newPlayHeadLoc])

    myStruct.playHeadLoc = newPlayHeadLoc;
    set(src, 'UserData', myStruct); %//Rewrap
end

它在matlab命令窗口上运行良好......但是当我将此代码放在GUI中按钮的回调函数中时,它只是在开始时用红线显示信号图。

我无法弄清楚为什么它在这里不起作用.. 请帮忙。您的贡献将不胜感激。

【问题讨论】:

    标签: matlab user-interface qpushbutton


    【解决方案1】:

    好吧,只需指定一个用于绘图的轴并为其赋予初始默认属性,而不是使用图形。

     btn1_callbck (VAR)
     set(handles.axes1);
     plot(t,signal);
     end
    

     btn1_callbck (VAR)
     figure(1000);
     plot(t,signal);
     end
    

    希望这会有所帮助。

    【讨论】:

    • 好的......当你有GUI时,你应该创建一个轴组件来绘制(axes1)。然后在回调函数中,你应该确定你要在哪个组件上绘制(绘图)。 btn1_callbck (VAR) set(handles.axes1);绘图(t,信号);结束 OR btn1_callbck (VAR) 图(1000);绘图(t,信号);结束
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多