Перейти к содержанию
    

Лчм сигнал в Matlab

Создан ЛЧМ сигнал через функцию chirp

clc; 
clear all;
  
f_begin = 71000;    % начальная частота 71 кГц
f_end = 79000;      % конечная частота 79 кГц   
f_dt = 19000;       % частота дискретизации 19000 Гц
tch_begin = 0;      % начальное время 0
tch_end = 13e-3;    % конечное время 13 мсек
tch_dt = 1/f_dt;    % время дискретизации   

tch = tch_begin:tch_dt:tch_end;         % время моделирования 13 мсек
y = chirp(tch,f_begin,tch_end,f_end);   % частота меняется от 71кГц (при t=0) до 79кГц (при t=13мсек)

fprintf(' %d\n', y);                    % значения y
figure
plot(tch*1000, y), grid;
xlabel('Время (в сек)');
title('ЛЧМ сигнал');
zoom xon;

Сигнал дискретизирован частотой 19 кГц

Подскажите пожалуйста как в каждый шаг дискретизации определить и вывести значение y в цифровом виде? Если y > 0 выводится 1, если y < 0 выводится 0. В конечном итоге нужно последовательность единичек и ноликов превратить в Hex вид.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

dec2hex( bi2de( reshape( y > 0, [], hex_size_in_bits )))

 

Создан ЛЧМ сигнал через функцию chirp

 

Подскажите пожалуйста как в каждый шаг дискретизации определить и вывести значение y в цифровом виде? Если y > 0 выводится 1, если y < 0 выводится 0. В конечном итоге нужно последовательность единичек и ноликов превратить в Hex вид.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

dec2hex( bi2de( reshape( y > 0, [], hex_size_in_bits )))

Спасибо. Смысл понятен. Преобразуем строку двоичных цифр в неотрицательное десятичное число. Затем число преобразуется в hex формат.

Немного непонятно создание строки двоичных цифр

reshape( y > 0, [], hex_size_in_bits )

Компилятор ругается типа

Undefined function or variable 'hex_size_in_bits'.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Плохой компилятор. Никуда не годный.

 

Нужно определить, сколько бит у вас будет содержаться в одном выводимом hex-значении. И прочитать help для функции reshape

 

Компилятор ругается типа
Undefined function or variable 'hex_size_in_bits'.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Плохой компилятор. Никуда не годный.

Нужно определить, сколько бит у вас будет содержаться в одном выводимом hex-значении. И прочитать help функции reshape

Понял. 4 бита
y_hex = dec2hex( bi2de( reshape( y > 0, [], 4 )))

Все работает.

Еще один нюанс. С какого конца идут старшие биты? Судя по тому как работает bi2de получается что функция работает начиная с младших бит. Тоесть

bi2de([0 0 0 0 0 1]);

это в десятичном виде 20, а

bi2de([1 0 0 0 0])

это 1;

Изменено пользователем Acvarif

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

doc bi2de

Спасибо. Все получилось.

 

Если не сложно, подскажите пожалуйста еще один момент.

Попытка вывести данные в HEX виде

y_hex = dec2hex(bi2de([0 0 0 0 0 1]));
formatSpec = ' %x';
fprintf(formatSpec, y_hex);

дает строку типа 32 30, тоесть в hex виде 20 (dec 32)

Функция dec2hex какраз и сохраняет данные в строку str = dec2hex(d) converts the decimal integer d to its hexadecimal representation stored in a MATLAB® string. d must be a nonnegative integer

Как можно эту строку преобразовать в int? Вместо 32 30 - вывести 20.

Изменено пользователем Acvarif

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 10.03.2016 в 16:32, acvarif сказал:

Спасибо. Работает.

не могли бы вы показать вашу программу, у меня как я понимаю похожее задание

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...