Uitable come inserire i dati?

di il
3 risposte

Uitable come inserire i dati?

Ciao a tutti!
sto creando una GUI in MatLab. Ho una funzione che viene eseguita dopo un pushbutton_callback che mi restituisce tre output. Questi tre output vengono rappresentati in un grafico, un oggetto axes.

C'è modo di rendere interattivo il grafico della gui in modo che si possa ruotare cliccandoci sopra con il puntatore del mouse?

Gli stessi valori che rappresento nel grafico vorrei che venissero scritti in una tabella messa a fianco del grafico. Come faccio a fare in modo che i tre output della funzione originale, che sono tre vettori 1x5, vengano trasposti e inseriti nelle colonne della tabella?
In particolare le tre variabili sono "[csNS_fin,csEO_fin,Zeta_fin]"

Grazie a tutti in anticipo!
function pushbutton1_Callback(~, ~, handles)

    set(handles.variabile,'string');
    numero = str2double(get(handles.variabile,'string'));
    [csNS_fin,csEO_fin,Zeta_fin] = Seriale_v17(numero);
    
%% creo il grafico da visualizzare
    axes(handles.graphicPanel);
    axis([-1.5 1.5 -1.5 1.5 -2 0]);
    plot3(csNS_fin,csEO_fin,Zeta_fin,'-ok','LineWidth',2,...
                'MarkerEdgeColor','g',...
                'MarkerFaceColor',[.0 .60 .0],...
                'MarkerSize',6);
    xlabel('displacements Norh-South [m]');
    ylabel('displacements East-West [m]');
    zlabel('depth[m]');
    legend('Chain location');
    grid on;
    axis tight;

3 Risposte

  • Re: Uitable come inserire i dati?

    Per ruotare il grafico con il mouse puoi utilizzare il tool "Rotate 3D" presente nella tool bar della "figure"

    r3d.jpg
    r3d.jpg

    Se la toolbar non compare nella finestra:

    [*] se hai generato la GUI con GUIDE:

    [*][*] apri la GUI con GUIDE
    [*][*] doppio click in un'area della GUI dove non ci sono "uicontrols": si apre l'interfaccia per il settaggio delle prprietà della "figure" della GUI
    [*][*] setta la property "toolbar" ==> "auto", oppure "figure"
    [*][*] salva la GUI


    [*] se hai generato la GUI direttamente con uno script, puoi settare direttamente la property:
    set(gcf,'toolbar','figure')
    In alternatica (che però non ti consiglio) puoi usare la funzione rotate3d
    rotate3d('on') % attiva rotazione 3D
    rotate3d('off') % disattiva rotazione 3D
    
    Per inserire i valori dei tre vettori nella uitable (per colonna), devi settare la property "data" della uitable in questo modo:
    set(handles.my_uitable,'data',[csNS_fin;csEO_fin;Zeta_fin].')
    dove "handles.my_uitable" è l'handle della uitable (costituiscilo con l'handle della tua uitable).

    Se, come hai scritto nella domanda i tre vettori sono (1 x 5), ci sono due modifiche da apportare al modo con il quale definisci i valori da inserire:

    [*] devi separarli con ";" per rendere l'insieme di dati una matrice
    [*] devi trasporre la matrice usando .' per avere i dati in colonna

    Se i tre vettori sono invece (5 x 1) i passi sopra descritti non sono necessari

    Hope this helps.
  • Re: Uitable come inserire i dati?

    Ask_raf
    ancora grazie per la risposta celere ed esaustiva. Ora funziona alla perfezione sia il grafico in 3d che può ruotare, sia la uitable che prende i dati nel modo corretto.

    Grazie ancora!!!
  • Re: Uitable come inserire i dati?

    E' stato un piacere!
Devi accedere o registrarti per scrivere nel forum
3 risposte