Matlab: как добавить данные к определенному номеру строки в удобном

Вопрос 1

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

combt =

Columns 1 through 5

2000    2530.4    2671.4    2.3   2.6

Эта строка будет автоматически добавлена ​​в строку 1 в следующем формате:

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

Обновить 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));
Другие вопросы по тегам