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