Этот пример показывает, как выполнить арифметику целочисленных данных, представляющих сигналы и изображения.
Загрузите наборы данных измерения, содержащие сигналы от четырех инструментов, использующих 8 и 16-битные A-to-D, что приводит к сохранению данных как 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');
Вероятно, что эти значения должны быть масштабированы, чтобы вычислить фактическое физическое значение, которое представляет сигнал, например, В.
Мы можем выполнить стандартную арифметику для целых чисел, таких как +
, -
, *
, и /
. Допустим, мы хотели найти сумму 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