2016-06-11 5 views
0

Вопрос 1Matlab: Как добавить данные в определенный номер строки в uitable

Я написал код графический интерфейс, который дает следующую строку, которая затем сделал для отображения на uitable:

combt = 

Columns 1 through 5 

2000 2530.4 2671.4 2.3 2.6 

Эта строка будет автоматически добавляться к строке 1 в uitable:

See here http://imageshack.com/a/img924/4946/I5s6NH.png в моем примере выше, я хотел бы эту строку, чтобы быть добавлены к строке 2000 (в зависимости от столбца 1 из моих данных).

Поэтому, если моя строка имеет column_1 = 10, я бы хотел, чтобы эта строка появлялась в строке 10 в удобной и так далее. Я искал этот ответ уже более года, поэтому ваша помощь будет высоко оценена.

Вопрос 2:

Скажем, у меня есть таблица со следующими номерами

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 

Как переставить их так, что, опять же, столбец 1 соответствует номеру строки и пробелы заполняются с нулями, как например:

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 

ответ

1

Используйте new_d(d(:,1),:)=d создать новую необходимую матрицу new_d. Вот пример кода.

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)); 

Update uitable с новыми данными:

%% 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

Спасибо. Можно ли изменить эту таблицу, т. Е. Если я получу больше строк, я бы хотел добавить их в существующую таблицу. Кроме того, я бы хотел, чтобы полученные строки с тем же значением в столбце 1 перезаписывали старые. – Mosawi

+1

Я обновил ответ. Пожалуйста, проверь это. –

+0

Спасибо, но это все еще перезаписывает все, создавая свежую таблицу – Mosawi

Смежные вопросы