Jump to content

    

Лчм сигнал в 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 вид.

 

 

Share this post


Link to post
Share on other sites

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

 

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

 

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

Share this post


Link to post
Share on other sites
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'.

 

 

Share this post


Link to post
Share on other sites

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

 

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

 

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

Share this post


Link to post
Share on other sites
Плохой компилятор. Никуда не годный.

Нужно определить, сколько бит у вас будет содержаться в одном выводимом 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;

Edited by Acvarif

Share this post


Link to post
Share on other sites

doc bi2de

 

Еще один нюанс. С какого конца идут старшие биты?

 

Share this post


Link to post
Share on other sites
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.

Edited by Acvarif

Share this post


Link to post
Share on other sites

Тогда dec2hex не нужна

 

Или выводите строкой, указав формат %s

 

Успехов

 

Share this post


Link to post
Share on other sites
Тогда dec2hex не нужна

Или выводите строкой, указав формат %s

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

Share this post


Link to post
Share on other sites
В 10.03.2016 в 16:32, acvarif сказал:

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this