Предлагаю вам также взглянуть на Symmetricds . это библиотека репликации SQLite, доступная для систем Android. вы можете использовать его для синхронизации своей клиентской и серверной базы данных, я также предлагаю иметь отдельные базы данных на сервере для каждого клиента. Попытка хранить данные всех пользователей в одной базе данных mysql не всегда лучшая идея. Особенно, если пользовательские данные будут быстро расти.
Вы можете линеаризовать решение, предложенное @HansHirse, поэтому небольшое улучшение может быть таким:
% Dummy data
A = rand(20, 3);
b = ceil(rand(20, 1) * 4);
% color vector
c = [0 1 0; 0 0 1; 0 1 1; 1 0 0];
% Use the linear indexing to select the right color
scatter3(A(:,1),A(:,2),A(:,3),[],c(b,:),"filled")
Еще проще, вы можете просто использовать b
в качестве ввода цвета, и Matlab будет использовать цветовую карту по умолчанию для установки цвет в соответствии с b
scatter3(A(:,1),A(:,2),A(:,3),[],b,"filled")
Я могу думать только о каком-то обходном пути, например:
% Input: A = coordinates, b = functional values.
A = rand(20, 3);
b = ceil(rand(20, 1) * 4);
% Color map.
cm = [0 1 0; 0 0 1; 0 1 1; 1 0 0];
% Circle size.
cs = 21;
% 3D scatter plot.
figure(1);
hold on;
for k = 1:size(cm, 1)
idx = (b == k);
scatter3(A(idx, 1), A(idx, 2), A(idx, 3), cs, cm(k, :), 'filled');
end
hold off;
view(45, 30);
grid on;
Дает следующий результат: