Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 10.01.2014
Сообщений: 11
1

Циклические коды и контрольные суммы

10.01.2014, 17:36. Показов 4792. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите разобраться пожалуйста. Необходим расчет контрольной суммы. Нашла две разные программы в интернете, которые выдают вроде бы одинаковый результат. В файле с1.txt почему то нельзя вводить значение msg более 15 символов.
Проверено на полиномах:
11100011
и
110011
результат двух программ одинаковый. может кто-нибудь их прокомментировать?не могу найти хорошего понятного кода для расчета контрольной суммы в матлабе

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
% msg = [1 1 1 0 0 0 1 1]
msg = input('input msg.....\n');
% poly = [1 1 0 0 1 1]
poly = input('input patern.....\n');
[M N] = size(poly);
mseg = [msg zeros(1,N-1)];
[q r] = deconv(mseg,poly);
r = abs(r);
for i = 1:length(r)
    a = r(i);
    if (mod(a,2) ==0)
        r(i) = 0;
    else
        r(i) = 1;
    end
end
crc = r(length(msg)+1:end)
frame = bitxor(mseg,r)
и что делает эта строчка
Matlab M
1
crc = r(length(msg)+1:end)
?
как проверить правильность расчета? запуталась совсем=(
а про эту строчку
Matlab M
1
deconv(mseg,poly);
было написано, что лучше использовать gfconv, но тогда msg и poly должны быть бинарными

не ясен результат и его проверка, что делают функции deconv, mod вроде бы понятно. цикл по mod служит для того чтобы все четные значения обнулить а нечетные будут равны единице, так? deconv деление полиномов

любой помощи спасибо. очень хочу разобраться!
Вложения
Тип файла: txt c.txt (591 байт, 10 просмотров)
Тип файла: txt c1.txt (384 байт, 10 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.01.2014, 17:36
Ответы с готовыми решениями:

контрольные коды
Добрый день, помогите, пожалуйста, составить программу Алиса и Боб играют в шпионов и передают...

Циклические коды
Для построение циклического кода (CRC) нужен образующий полином, который мы должны найти по таблице...

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

Сделать программу, которая строит циклические коды
Сделать программу, которая строит циклические коды..., помогите пожалуйста

6
0 / 0 / 0
Регистрация: 10.01.2014
Сообщений: 11
10.01.2014, 17:40  [ТС] 2
непонятно(
0
5242 / 3570 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
10.01.2014, 18:23 3
первым делом я тебе скажу, что так ты массивы не ведешь
должна быть такая конструкция:
Matlab M
1
2
msg = input('input msg.....:','s');
msg = strnum(msg);
и аналогично для poly, которое надо обозвать чуть иначе, т.к. это имя встроенной ф-ции
В 6й строке происходить дополнение нулями
В 7й - деление многочленов, r - это остаток от деления, тоже некоторый многочлен, r(i) - его коэф-ты.
Как могу догадываться, в цикле делается деление по модую 2 этих коэф-тов однако это можно сделать гораздо проще
глянь подправленный код и пояснения в нем:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
clear, clc
 
% msg = input('input msg.....: ','s');
% msg = str2num(msg);
% poli = input('input patern...: ','s');
% poli = str2num(poli);
msg = [1 1 1 0 0 0 1 1]
poli = [1 1 0 0 1 1]
N = length(poli);
mseg = [msg zeros(1,N-1)]; % дополняем нулями
[q r] = deconv(mseg,poli); % деление многочленов
r = abs(r); % остаток от деления 
r = mod(r,2) % делим по модулю 2
 
crc = r(length(msg)+1:end) % берем часть после сообщения и до конца
frame = bitxor(mseg,r) % побитовое исключающее или сообщения и остатка
% таким образом вначале идет сообщение msg, а за ним контрольная сумма crc
% которые вместе образуют frame
1
0 / 0 / 0
Регистрация: 10.01.2014
Сообщений: 11
12.01.2014, 16:34  [ТС] 4
Цитата Сообщение от Зосима Посмотреть сообщение
r = mod(r,2)
а так точно можно заменить целый цикл?

Теперь работает с длинным msg, но мне нужно чтобы msg и poli вводились из командной строки без пробелов, а то сейчас я ввожу например: 1 1 1 0 0 0 1 1
а надо: 11100011 как так сделать? чтобы матлаб понял что это полином? может все-таки как-то использовать gfconv?
в этой программе можно вычислить любую контрольную сумму?8?16?32 и др?просто меняя poli? и как проверить правильность? пытаюсь соотнести теорию и матлаб
Спасибо
0
5242 / 3570 / 379
Регистрация: 02.04.2012
Сообщений: 6,473
Записей в блоге: 17
13.01.2014, 12:07 5
Цитата Сообщение от bani-8 Посмотреть сообщение
так точно можно заменить целый цикл?
здесь можно
Цитата Сообщение от bani-8 Посмотреть сообщение
а надо: 11100011 как так сделать?
можно сделать так:
Matlab M
1
2
3
4
5
6
7
8
s = input('input msg.....: ','s');
for i = 1:length(s)
    msg(i) = str2num(s(i));
end
s = input('input patern...: ','s');
for i = 1:length(s)
    poli(i) = str2num(s(i));
end
Цитата Сообщение от bani-8 Посмотреть сообщение
в этой программе можно вычислить любую контрольную сумму?8?16?32 и др?просто меняя poli? и как проверить правильность? пытаюсь соотнести теорию и матлаб
я не знаю, т.к. с этой темой не знаком!
1
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
13.01.2014, 16:08 6
Цитата Сообщение от bani-8 Посмотреть сообщение
программе можно вычислить любую контрольную сумму?8?16?32 и др?просто меняя poli? и как проверить правильность?
Если использовать стандартные полиномы, то для проверки crc можно использовать любую из миллионов программ использующих контрольные суммы. На википедии есть таблица стандартизированных полиномов и внизу страницы ссылки для проверки(онлайн калькулятор например)
0
0 / 0 / 0
Регистрация: 10.01.2014
Сообщений: 11
15.01.2014, 09:25  [ТС] 7
Помогите посчитать контрольную сумму для сообщения 1101011011
Используя в качестве порождающего полинома 100110001
0
15.01.2014, 09:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.01.2014, 09:25
Помогаю со студенческими работами здесь

Контрольные суммы
Как реализовать возможность создания контрольных сумм файла для проверки того, что файл не...

Контрольные суммы
Как и чем в win7 проверять контрольные суммы. Заранее спасибо за ответ.

контрольные суммы
всем здравствуйте. я долго искал подходящий топик, но не нашёл и решил создать, так как то, что...

Контрольные суммы
Добрый день! Есть такая задача: Дан битовый поток, найти в нем контрольные суммы и рассчитать их с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru