Использование набора для обновления графиков в Matlab

Я пытаюсь обновить новые значения функции, используя функцию set.

Вот код:

daq_object = analoginput('winsound');
chan = addchannel(daq_object,1);
x=[10];
num_samples = 1000;
axes(handles.axes1);
plot_handle=surf(T,F,10*log10(P),'edgecolor','none'); 
axis tight; 
view(0,90);
xlabel('Time (Seconds)'); ylabel('Hz');

 set(daq_object,'SamplesPerTrigger',inf,'SamplesAcquiredFcnCount',num_samples,...
    'SamplesAcquiredFcn',{@update_plot,handles});

function update_plot(handles)

data = getdata(daq_object,num_samples);
[S,F,T,P] = spectrogram(data,256,250,256,1E3);

    set(plot_handle,'YData',T,F,P); % ERROR WITH THIS, UPDATING THE VARIABLES. 

end

Ошибка в том, что я не знаю, как обновить несколько переменных в функции. для одной переменной ex:

h=plot(zeros(100,2));
for i=1:20
    set(h,'Ydata',rand(10,1));
    drawnow;
end

но здесь мне нужно обновить значения T, F и P. Как я могу использовать SET для этого?

Я пытался:

set(plot_handle,'YData',T,F,P);

но это просто дает мне ошибки.


person Rave    schedule 26.07.2011    source источник
comment
В вашем примере используется analoginput из набора инструментов Data Acquisition. Поскольку многие люди, которые могут вам ответить (включая меня), не имеют доступа к этому набору инструментов, не могли бы вы привести пример, в котором используется базовый MATLAB?   -  person Richie Cotton    schedule 26.07.2011


Ответы (1)


set принимает пары имя-значение, то есть после первой переменной (которая является дескриптором фигуры или некоторых осей) аргументы должны чередоваться name of variable, затем value to assign to that variable.

В вашем неудачном примере у вас есть три последовательных значения (T, F и P) без имен между ними.

person Richie Cotton    schedule 26.07.2011
comment
поэтому я должен изменить set(plot_handle,'YData',T,F,P); на set(plot_handle,'XData',T,'YData',F,'ZData',P); - person Rave; 26.07.2011