نمایش نتایج 1 تا 17 از 17

نام تاپیک: Huffman Coding or Arithmetic Coding

  1. #1

    Huffman Coding or Arithmetic Coding

    سلام
    من ورودی دارم که شامل عدد و برخی حروف لاتین هستش ،که به طور کلی شامل پانزده کاراکتر منحصر به فرد هستش
    میخاستم بدونم برای فشرده سازی این فایل ارتمتیک بهتره یا هافمن یا الگوریتم دیگه ای؟
    ممنون

  2. #2

    نقل قول: Huffman Coding or Arithmetic Coding

    سلام
    شاید بهتر باشه روشهای مختلف را روی اونها اعمال کنید ببینید کدوم جواب بهتری میده

  3. #3

    نقل قول: Huffman Coding or Arithmetic Coding

    سلام
    به جز ارتمتیک و هافمن الگوریتم دیگه ای هم هست یا همین دوتا رو تست کنم؟
    و اینکه کدهایی که برای ارتمتیک گرفتم به دو قسمت تقسیم شده ، یکی نوشته ارتمتیک برای اینتیجر و یکی ازتمتیک برای کاراکتر، ولی ورودی من شامل هر دوی اینهاس، میخاستم بدونم یعنی این تابع روی ورودی که شامل هم کاراکتر باشه و هم عدد جواب نمیده؟

  4. #4

    نقل قول: Huffman Coding or Arithmetic Coding

    شما برای کاراکتر تست می کنید چون عدد ها هم به صورت کاراکتر ذخیره شدند
    الگوریتم فشرده سازی که زیاد هست. حالا توی کاربرد شما دقیقا نمیدونم

  5. #5

    نقل قول: Huffman Coding or Arithmetic Coding

    سلام
    ببینین آخه طول رشته خروجی رو بیشتر میده نسبت به طول رشته ورودی،آخه این چه جور فشرده سازی هستش
    الان طول رشته ورودی بوده 22 طول رشته فشرده شده هستش 70
    مشکل کجاس؟

    Tag =0000000110010000011010101110111110001000001110110 011100010010010011001
    Sequence =
    AAABBCCCC345AA76DDA876
    K>> size(tag,2)

    ans =

    70

    K>> size(seq,2)

    ans =

    22

  6. #6

    نقل قول: Huffman Coding or Arithmetic Coding

    آها متوجه شدم
    الان طول رشته ورودی من که22 هست، در واقع 22*8=176 بیت نیاز دارم برای ذخیره سازیش در حالی که برای رشته خروجی به 70*1=70 بیت نیاز دارم برای ذخیره سازی، یعنی 106 بیت الان کم شده. درسته؟؟

  7. #7

    نقل قول: Huffman Coding or Arithmetic Coding

    بله درسته تعداد بیتها مهمه

  8. #8

    نقل قول: Huffman Coding or Arithmetic Coding

    سلام
    هافمن و ارتمتیک بخاطر داشتن حلقه for در قسمتی که میخان رشته ورودی رو رمز کنن، سرعت فوق العاده پایینی دارد وقتی رشته ورودی طولانی می باشد
    در هافمن در قسمتی که میخاهد برای هرکاراکتر یک رمزینه پیدا کند سرعت بالاست، اما وقتی میخاهد به کمک رمزینه ها رشته رو فشرده کند، چون از یک حلقه for استفاده میکند تا کل رشته رو پیمایش کند و به ازای هر کاراکتر کد آن رابزارد سرعت خیلی پایین می اید برای حل این مشکل من حلقه for رو برداشتم و به جای آن از دستور خود متلب استفاده کردم:

    encseq = strrep(encseq,huf(i).sym,huf(i).code);

    این کار سرعت رو فوق العاده بالا برد که طوری که رو رشته های با طول زیاد سریع جواب میگیرم

    اما مشکل من در ارتمتیک کدینگ هستش که سرعت اون هم برای رشته های طولانی(که ورودی های من اغلب با ظول بیش از 800000 کاراکتر هستن) بسیار بسیار کند میباشد. میخاستم ببینم میشه تغییری در کدش داد(مثل اون کاری که من در هافمن کردم یا چیزی شبیه به این) که سرعت ارتمتیک بالا برود برای رشته های طولانی
    این هم کد ارتمتیک:
    http://freesourcecode.net/matlabproj...b#.VX6gRFK0TDd

  9. #9

    نقل قول: Huffman Coding or Arithmetic Coding

    سلام
    ببینید اگه سرعت مد نظر شماست پیشنهاد می کنم به طرف ++c برید
    مثلا در فایل arithintcod.m در اونجا که حلقه هست

    while scale>0
    tag=strcat(tag,sc);
    scale=scale-1;
    end

    می شه از strrep استفاده کرد
    یا شیاد بهتر باشه به جای dec2bin و bin2dec که انجام شده کلا روی اعداد از عملگر ها بیتی استفاده بشه که نیاز داره تغییرات زیادی اعمال بشه ولی اینکه بهبود قابل توجه هست یا نه معلوم نیست

  10. #10

    نقل قول: Huffman Coding or Arithmetic Coding

    سلام
    نه با سی نمیشه، چون کار من تو متلبه، و یک قسمت کوچیکش از ارتمتیک استفاده میشه و نمیتونم کل کدمو ببرم تو سی
    این قسمت

    while scale>0
    tag=strcat(tag,sc);
    scale=scale-1;
    end



    که داره رشته tag رو ایجاد میکنه و میچسبونه به هم و دستور strrep که برای پیدا کرد یک زیررشته در یک زیررشته دیگه و جایگزینی با یک مقدار هستش، چجوری اینو جایگزینو strcat کنم؟؟
    اون خط آخر "ا شیاد بهتر باشه به جای dec2bin و bin2dec که انجام شده کلا روی اعداد از عملگر ها بیتی استفاده بشه که نیاز داره تغییرات زیادی اعمال بشه ولی اینکه بهبود قابل توجه هست یا نه معلوم نیست" رو هم متوجه منظورتون نشدم؟

  11. #11

    نقل قول: Huffman Coding or Arithmetic Coding

    سلام
    نه با سی نمیشه، چون کار من تو متلبه، و یک قسمت کوچیکش از ارتمتیک استفاده میشه و نمیتونم کل کدمو ببرم تو سی
    این قسمت

    while scale>0
    tag=strcat(tag,sc);
    scale=scale-1;
    end



    که داره رشته tag رو ایجاد میکنه و میچسبونه به هم و دستور strrep که برای پیدا کرد یک زیررشته در یک زیررشته دیگه و جایگزینی با یک مقدار هستش، چجوری اینو جایگزینو strcat کنم؟؟
    اون خط آخر "ا شیاد بهتر باشه به جای dec2bin و bin2dec که انجام شده کلا روی اعداد از عملگر ها بیتی استفاده بشه که نیاز داره تغییرات زیادی اعمال بشه ولی اینکه بهبود قابل توجه هست یا نه معلوم نیست" رو هم متوجه منظورتون نشدم؟

  12. #12

    نقل قول: Huffman Coding or Arithmetic Coding

    شما می تونید در فایل arithintcod.m به جای تکه کد زیر که در دو نقطه این فایل استفاده شده

    while scale>0
    tag=strcat(tag,sc);
    scale=scale-1;
    end

    کد زیر را قرار بدید

    tag = strcat(tag, repmat(sc,1, scale));
    scale = 0;

    در فایل arithintdecod.m هم به جای

    while(s>=CC(k))
    k=k+1;
    end

    کد زیر را بذارید

    k = find( s < CC, 1);

    همچنین در هر دو فایل ذکر شده این کد وجود داره

    CC(1)=0;
    for i=1:length(cnt)
    CC(i+1)=CC(i)+cnt(i);
    end
    totcount=CC(i+1);

    که می شه به جای اون کد زیر را گذاشت

    CC =[0 cumsum(cnt)];
    totcount=CC(end);

    در مورد عملگر ها بیتی مثل bitand , bishift و غیره اگه بخواهید استفاده کنید فکر کنم فایده ای نداره و سرعت را پایین میاره
    در کل تقریبا بیش از این قابل بهینه سازی نیست
    آخرین ویرایش به وسیله rahnema1 : جمعه 29 خرداد 1394 در 13:01 عصر دلیل: اصلاح اشتباه

  13. #13

    نقل قول: Huffman Coding or Arithmetic Coding

    ممنون
    ببینین توی اون کد یک arithint داریم و یک arithscale فرق این دو چیه؟
    ورودی من تشکلی شده از کاراکتر حروف لاتین و اعداد، مثلن:
    ASDSDA23AS3
    برای فشرده سازی این از کدوم یکی باید استفاده کنم؟

  14. #14

    نقل قول: Huffman Coding or Arithmetic Coding

    یک چیز دیگه، من تغییراتی که شما گفتینو اعمال کردم اما ارور داد و اجرا نشد

    ??? Error using ==> strrep
    Not enough input arguments.

    Error in ==> arithintcod at 49
    tag = strcat(tag, strrep(sc, scale));

    Error in ==> arithint at 9
    btag=arithintcod(alpha,cnt,seq);

  15. #15

    نقل قول: Huffman Coding or Arithmetic Coding

    نقل قول نوشته شده توسط sara joun مشاهده تاپیک
    ممنون
    ببینین توی اون کد یک arithint داریم و یک arithscale فرق این دو چیه؟
    ورودی من تشکلی شده از کاراکتر حروف لاتین و اعداد، مثلن:
    ASDSDA23AS3
    برای فشرده سازی این از کدوم یکی باید استفاده کنم؟
    فرقش را دقیقا نمیتونم بگم لازمه به منابعی که توضیح دادن مراجعه کنیم ولی فکر کنم با هر دو میشه

  16. #16

    نقل قول: Huffman Coding or Arithmetic Coding

    در مورد ارور، با عرض معذرت من اشتباه نوشته بودم که اینجوری اصلاح کنید
    tag = strcat(tag, repmat(sc,1, scale));

  17. #17

    نقل قول: Huffman Coding or Arithmetic Coding

    سلام
    کدهافمن توسعه یافته، در اين روش به جاي آنكه به ازاي هر سمبول يك كلمه رمز استفاده شود براي تركيبي از سمبول ها معادل دودويي در نظر گرفته مي شود.
    کدهافمن توسعه یافته رو برای متلب، کسی داره؟؟

تاپیک های مشابه

  1. سوال: تفاوت P-Code با native Code در چیست
    نوشته شده توسط click.1387 در بخش برنامه نویسی در 6 VB
    پاسخ: 1
    آخرین پست: چهارشنبه 18 شهریور 1388, 14:44 عصر
  2. ایجاد رابطه بین Managed Code و UnManaged Code
    نوشته شده توسط محمد عرب در بخش VB.NET
    پاسخ: 1
    آخرین پست: یک شنبه 28 اسفند 1384, 01:51 صبح
  3. فرق بین unmanaged Code و managed Code
    نوشته شده توسط سلماس در بخش VB.NET
    پاسخ: 4
    آخرین پست: پنج شنبه 18 اسفند 1384, 23:48 عصر
  4. native code ya P-code?d
    نوشته شده توسط Best Programmer در بخش برنامه نویسی در 6 VB
    پاسخ: 1
    آخرین پست: شنبه 20 دی 1382, 06:29 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •