У меня есть матрица значений типа single, которую я хочу построить на поверхности. Когда я пытаюсь использовать функцию прибоя в MATLAB, я получаю сообщение об ошибке, указывающее, что мне нужно использовать вместо uint8 или double:
x=peaks; %# Initialize x to a matrix of doubles
surf(x); %# No problem when x is of type double
Сейчас попробую синглы:
x=single(peaks);
surf(x);
выдает следующую ошибку:
Warning: CData must be double or uint8.
Warning: CData must be double or uint8.
Ну, это прискорбно. Я предполагаю, что мне придется увеличить до двойной точности для цветовой карты:
x=single(peaks);
surf(x,double(x));
Работает просто отлично. Но просто для удовольствия давайте попробуем и uint8:
x=single(peaks);
surf(x,uint8(x));
Получает следующее:
Warning: CData must be double or single unless it is used only as a texture data
Warning: CData must be double or single unless it is used only as a texture data
Какого черта MATLAB? Прими решение! Так почему же мне нужно использовать дополнительную память в форме двойной точности для обозначения карты цветов для функции surf
? Даже когда в тексте ошибки MATLAB говорится, что я могу использовать uint8 или single, в зависимости от того, какой из них я не использовал ?