Этот пример показывает, как выполнить арифметику на сигналах представления целочисленных данных и изображениях.
Загрузите наборы данных измерения, включающие сигналы от четырех инструментов с помощью 8 и 16-битный А-ту-Д, получившийся в данных, сохраненных как int8
, int16
и uint16
. Время сохранено как uint16
.
load integersignal % Look at variables whos Signal1 Signal2 Signal3 Signal4 Time1
Name Size Bytes Class Attributes Signal1 7550x1 7550 int8 Signal2 7550x1 7550 int8 Signal3 7550x1 15100 int16 Signal4 7550x1 15100 uint16 Time1 7550x1 15100 uint16
Сначала мы построим график двух из сигналов видеть диапазоны сигнала.
plot(Time1, Signal1, Time1, Signal2); grid; legend('Signal1','Signal2');
Здесь мы видим значения для int8
. Вероятно, что эти значения должны были бы масштабироваться, чтобы вычислить фактическое физическое значение, что сигнал представляет e. g. Вольты.
Мы можем выполнить стандартную арифметику на целых числах, таких как +
, -
, *
и /
. Скажем, мы хотели найти сумму Signal1 и Signal2.
SumSig = Signal1 + Signal2; % Here we sum the integer signals.
Теперь давайте построим график сигнала суммы и смотреть, где он насыщает.
cla; plot(Time1, SumSig); hold on Saturated = (SumSig == intmin('int8')) | (SumSig == intmax('int8')); % Find where it has saturated plot(Time1(Saturated),SumSig(Saturated),'rd') grid hold off
Маркеры показывают, где сигнал насыщал.
Затем мы посмотрим на арифметику на некоторых данных изображения.
street1 = imread('street1.jpg'); % Load image data street2 = imread('street2.jpg'); whos street1 street2
Name Size Bytes Class Attributes street1 480x640x3 921600 uint8 street2 480x640x3 921600 uint8
Здесь мы видим, что изображения являются 24-битным цветом, сохраненным как три плоскости данных uint8
.
Отображение сначала отображает.
cla; image(street1); % Display image axis equal axis off
Отобразите второе изображение
image(street2); % Display image axis equal axis off
Мы можем масштабировать изображение постоянной двойной точностью, но сохранить изображение сохраненным как целые числа. Например,
duller = 0.5 * street2; % Scale image with a double constant but create an integer whos duller
Name Size Bytes Class Attributes duller 480x640x3 921600 uint8
subplot(1,2,1); image(street2); axis off equal tight title('Original'); % Display image subplot(1,2,2); image(duller); axis off equal tight title('Duller'); % Display image
Мы можем добавить два уличных изображения вместе и построить график призрачного результата.
combined = street1 + duller; % Add |uint8| images subplot(1,1,1) cla; image(combined); % Display image title('Combined'); axis equal axis off