2016-06-11 2 views
0

Question 1Matlab: Comment ajouter des données à numéro de ligne spécifique dans un uitable

J'ai écrit un code graphique qui donne la ligne suivante qui est ensuite afficher sur un uitable:

combt = 

Columns 1 through 5 

2000 2530.4 2671.4 2.3 2.6 

cette ligne sera ajoutée automatiquement à la ligne 1 dans le uitable:

See here http://imageshack.com/a/img924/4946/I5s6NH.png dans mon exemple ci-dessus, je voudrais cette ligne à ajouter à la ligne 2000 (selon la colonne 1 de mes données).

Par conséquent, si ma ligne a un column_1 = 10, je voudrais que cette ligne apparaisse à la ligne 10 dans le uitable et ainsi de suite. Je cherche cette réponse depuis plus d'un an donc votre aide sera grandement appréciée.

Question 2:

Dire que j'ai une table avec les numéros suivants

combt = 

Columns 1 through 5 

1 2630.4 2671.4 5.3 2.6 
2 2530.2 2673.4 2.2 6.6 
10 2331.4 4671.2 4.3 2.7 
11 2550.4 6671.4 2.1 2.8 

Comment les réorganiser pour que, encore une fois, la colonne 1 correspond au numéro de ligne et les espaces sont remplis avec des zéros en tant que tels:

combt = 

Columns 1 through 5 

1 2630.4 2671.4 5.3 2.6 
2 2530.2 2673.4 2.2 6.6 
0 0   0   0  0  (This is row 3) 
0 0   0   0  0  (This is row 4) 
0 0   0   0  0  (This is row 5) 
0 0   0   0  0  (This is row 6) 
0 0   0   0  0  (This is row 7) 
0 0   0   0  0  (This is row 8) 
0 0   0   0  0  (This is row 9) 
10 2331.4 4671.2 4.3 2.7 
11 2550.4 6671.4 2.1 2.8 

Répondre

1

Utilisez new_d(d(:,1),:)=d pour créer votre nouvelle matrice requise new_d. Voici un exemple de code.

d = [1 2630.4 2671.4 5.3 2.6; ... 
2 2530.2 2673.4 2.2 6.6; ... 
10 2331.4 4671.2 4.3 2.7; ... 
11 2550.4 6671.4 2.1 2.8]; 

new_d(d(:,1),:)=d; 

% with first column 
f = figure(); 
t = uitable(f,'Data',new_d); 

% without showing first column 
f1 = figure(); 
t1 = uitable(f1,'Data',new_d(:,2:end)); 

Mise à jour uitable avec de nouvelles données:

%% update table 
% new data containing same first column value 10 and 2 
d1 = [14 2630.4 2671.4 5.3 2.6; ... 
18 2530.2 2673.4 2.2 6.6; ... 
10 3333.4 2671.2 3.3 1.7; ... 
2 2331.4 4671.2 4.3 2.7]; 

% update data 
new_d(d1(:,1),:)=d1; 

% update uitable with first column 
set(t,'Data',new_d); 

% update uitable without showing first column 
set(t1,'Data',new_d(:,2:end)); 
+0

Merci. Est-il possible de modifier cette table, c'est-à-dire si j'acquiers plus de lignes, je voudrais les ajouter à la table existante. De plus, j'aimerais que les lignes acquises avec la même valeur dans la colonne 1 écrasent les anciennes. – Mosawi

+1

J'ai mis à jour la réponse. S'il te plaît vérifie le. –

+0

Merci, mais cela écrase tout, produisant une nouvelle table – Mosawi