首页 > 解决方案 > 如何保存已编辑的 uitable?

问题描述

在一个函数中,我以编程方式创建了一个带有绘图的可编辑 uitable。每当单元格值发生变化时,绘图就会更新。我想将新编辑的表格设置为输出。到目前为止我的代码:

function outputTable = begrenzung() 

t = table(Drehzahl, Drehmoment, 'RowNames',{'Startpunkt' 'P1' 'P2' 'P3' 'Endpunkt'}); 

fig = uifigure; 
fig.Position(3:4) = [822 360]; 

uit = uitable(fig,'ColumnEditable',true); 
uit.Data = t; 
uit.FontSize = 10; 
uit.FontWeight = 'bold'; 
uit.ColumnEditable = true; 
uit.Position(3) = 375; 
ax = uiaxes(fig); 
ax.Position(1) = 415; 
ax.YLabel.String = 'Drehmoment [Nm]'; 
ax.XLabel.String = 'Drehzahl [rpm]'; 
x = t{:,1}; 
y = t{:,2}; 
area(ax,x,y); 
ax.XLim = [0 45]; 
ax.YLim = [0 2000]; 
ax.Title.String = 'Feld der gefahrenen Punkte'; 
uit.CellEditCallback = @updatePlot; 

    function outputTable = updatePlot(src,event) 
    area(ax,uit.Data{:,1},uit.Data{:,2}); 
    end 

end 

每次值更改后如何保存更新的 uitable?

标签: matlabmatlab-uitable

解决方案


我找到了一个解决方案,即使这可能不是优雅的方式:

function [outputTable] = begrenzung() 

    t = table(Drehzahl, Drehmoment,...
        'RowNames',{'Startpunkt' 'P1' 'P2' 'P3' 'P4' 'Endpunkt'});

    fig = uifigure;    
    fig.Position(3:4) = [822 360]; 

    uit = uitable(fig);     
    uit.Data = t;    
    uit.FontSize = 10;   
    uit.FontWeight = 'bold'; 
    uit.ColumnEditable = true;   
    uit.Position(3) = 375;     
    ax = uiaxes(fig);     
    ax.Position(1) = 415;    
    ax.YLabel.String = 'Drehmoment [Nm]';    
    ax.XLabel.String = 'Drehzahl [rpm]';     
    x = t{:,1}; 
    y = t{:,2};     
    fill(ax,x,y,'c');   
    ax.XLim = [0 45]; 
    ax.YLim = [0 2000];     
    ax.Title.String = 'Feld der gefahrenen Punkte';     
    uit.CellEditCallback = @updatePlot;


        function [test] = updatePlot(src,event) 

            fill(ax,uit.Data{:,1},uit.Data{:,2},'c'); 
            outputTable = uit.Data; 

        end 

    outputTable = uit.Data;

    uiwait(fig);

end 

这样,我的输出就是更改后的表


推荐阅读