1

matlab uitable でパターン値をドラッグできるかどうかを知りたいです。スプレッドシートで 1 ~ 50 の値を入力するには、1、2、3 と入力し、セルを選択してドラッグする必要があります。これはmatlab uitableで実行できますか? よろしく。

4

2 に答える 2

1

それはできます。しかし、Excelほど快適ではありません。

次のコードを少し試してみてください。必要に応じて改善したり変更したりできます。それはあなたにとって良い出発点だと思います。

function fancyTable 

defaultData = randi(99,25,2);

h = figure('Position',[300 100 402 455],'numbertitle','off','MenuBar','none');
uitable(h,'Units','normalized','Position',[0 0 1 1],...
              'Data', defaultData,... 
              'Tag','myTable',...
              'ColumnName', [],'RowName',[],...
              'ColumnWidth', {200 200},...
              'CellSelectionCallback',@cellSelect);
end

function cellSelect(src,evt)
try
index = evt.Indices;
data = get(src,'Data');
L = size(index,1);
rows = index(:,1);
column = index(1,2);
start = data(rows(1),column);
newdata = start:(start+L-1);
data(rows,column) = newdata';
set(src,'Data',data);
end
end

次の 2 つの列を持つテーブルを作成します。

ここに画像の説明を入力

データを選択すると、最初の値に従って、目的のドラッグ パターンがすぐに適用されます。


コードは、対応する値に基づいて、選択の最初のポイントに増加する一連の値を挿入するだけです。最も難しい部分は、パターンを検出することです! start = data(rows(1),column);3: の最小選択を必要とする可能性のある最初のデータ値を評価しましたstart = data(rows(1:3),column);。説明のつかないケースをすべてスキップするには、多くのtry/構造を扱う必要があるでしょう。catchまたは、最初からswitch/case構造を使用して、選択の長さを評価し、パターンを評価します。

全体として、それは大変な作業であり、それだけの価値があるかどうかはわかりません。しかし、それは可能です。

于 2014-01-02T10:54:42.853 に答える
0

uitableテーブルに表示するデータ (通常は行列) を挿入します。したがって、Excel とは異なり、uitable関数はデータを操作するためのツールではなく、単にデータを表示する形式です。詳細については、こちらを参照してください。ただし、1 から 10 まで実行するインスタンスの行を設定する場合は、次の手順を使用できます。

たとえば、サイズが 10x10 のマトリックスを表示したいとします。 A=magic(10);

tこのマトリックスを表示するテーブルを設定できるようになりました。

t=uitable('Data',A);

あなたの場合、行を1から10までにしたい場合は、Aデータを含む行列を変更して、この行を保持するだけです

A(1,1:10)=1:10;

そして、前のコマンドを再実行して、テーブルを表示しますt

于 2014-01-02T09:16:26.167 に答える