اطلاعیه

Collapse
No announcement yet.

پردازش سیگنال با موجک در متلب

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    پردازش سیگنال با موجک در متلب

    سلام دوستان
    برای پردازش سیگنال داده های دریافتی از سنسور شتاب سنج وضربان قلب (کلا چهار تا داده)از تبدیل موجک در محیط متلب استفاده می کنم، اما زمانی که M-File مربوطه رو ساختم فایل txt که شامل آرایه ای از داده هاست در واقع مربوط به داده های دریافت شده از سنسور هست رو تشخیص نمیده نمیدونم چیکار کنم ممنون میشم راهنماییم کنید.کدM-File رو پایین قرار دادم.
    کد:
    function [wave1, wave2, wave3, wave4] = allwavelet(in1, in2,in3,in4,WinSize, label)
    
    % Arrlength = length(in1);
    size=0;
    detailSize=0;
    
    %Calculate X wavelet
    tempX(WinSize)=0;
    k=1;
    for i = 1:WinSize:Arrlength
      m=1;
      for j = i:1:i+WinSize-1
        tempX(m) = in1(j);
        m=m+1;
      end
      [Cx,Lx] = wavedec(tempX,3,'haar');
      size=Lx(1)+Lx(2)+Lx(3)+Lx(4);
      detailSize=Lx(2)+Lx(3)+Lx(4);
      res 1(1:size,k)=Cx;
      k=k+1;
    end
    
    %Calculate Y wavelet
    tempY(WinSize)=0;
    k=1;
    for i = 1:WinSize:Arrlength
      m=1;
      for j = i:1:i+WinSize-1
        tempY(m) = in2(j);
        m=m+1;
      end
      [Cy,Ly] = wavedec(tempY,3,'haar');
      size=Ly(1)+Ly(2)+Ly(3)+Ly(4);
      res 2(1:size,k)=Cy;
      k=k+1;
    end
    
    
    %Calculate Z wavelet
    tempZ(WinSize)=0;
    k=1;
    for i = 1:WinSize:Arrlength
      m=1;
      for j = i:1:i+WinSize-1
        tempZ(m) = in3(j);
        m=m+1;
      end
      [Cz,Lz] = wavedec(tempZ,3,'haar');
      size=Lz(1)+Lz(2)+Lz(3)+Lz(4);
      res 3(1:size,k)=Cz;
      k=k+1;
    end
    
    %Calculate PPG wavelet
    tempG(WinSize)=0;
    k=1;
    for i = 1:WinSize:Arrlength
      m=1;
      for j = i:1:i+WinSize-1
        tempG(m) = in4(j);
        m=m+1;
      end
      [Cg,Lg] = wavedec(tempG,3,'haar');
      size=Lg(1)+Lg(2)+Lg(3)+Lg(4);
      res 4(1:size,k)=Ch;
      k=k+1;
    end
    
    %Write outputs in file x
    filename =['allwavelet_x',num2str(WinSize),label,'.txt'];
    fid = fopen(filename, 'w');
    group=Arrlength/WinSize;
    for i = 1:1:size
      for j = 1:1:group
        fprintf(fid, '%6.4f', res1(i,j));
        fprintf(fid,' ');
      end
      fprintf(fid,'\r\n'); 
    end
    fclose(fid);
    %End Write
    
    %Write outputs in file y
    filename =['allwavelet_y',num2str(WinSize),label,'.txt'];
    fid = fopen(filename, 'w');
    group=Arrlength/WinSize;
    for i = 1:1:size
      for j = 1:1:group
        fprintf(fid, '%6.4f', res2(i,j));
        fprintf(fid,' ');
      end
      fprintf(fid,'\r\n'); 
    end
    fclose(fid);
    %End Write
    
    %Write outputs in file z
    filename =['allwavelet_z',num2str(WinSize),label,'.txt'];
    fid = fopen(filename, 'w');
    group=Arrlength/WinSize;
    for i = 1:1:size
      for j = 1:1:group
        fprintf(fid, '%6.4f', res3(i,j));
        fprintf(fid,' ');
      end
      fprintf(fid,'\r\n'); 
    end
    fclose(fid);
    %End Write
    
    %Write outputs in file h
    filename =['allwavelet_h',num2str(WinSize),label,'.txt'];
    fid = fopen(filename, 'w');
    group=Arrlength/WinSize;
    for i = 1:1:size
      for j = 1:1:group
        fprintf(fid, '%6.4f', res4(i,j));
        fprintf(fid,' ');
      end
      fprintf(fid,'\r\n'); 
    end
    fclose(fid);
    %End Write
    
    %Plot
    b=group*detailSize;
    detailSize = size - detailSize + 1;
    wave1(b)=0.0;
    k=1;
    for i = 1:1:group 
      for j = detailSize:1:size
        wave1(k)=res1(j,i);
        k=k+1;
      end
    end
    %%%%%
    wave2(b)=0.0;
    k=1;
    for i = 1:1:group 
      for j = detailSize:1:size
        wave2(k)=res2(j,i);
        k=k+1;
      end
    end
    %%%%%
    wave3(b)=0.0;
    k=1;
    for i = 1:1:group 
      for j = detailSize:1:size
        wave3(k)=res3(j,i);
        k=k+1;
      end
    end
    %%%%%
    wave4(b)=0.0;
    k=1;
    for i = 1:1:group 
      for j = detailSize:1:size
        wave4(k)=res4(j,i);
        k=k+1;
      end
    end
    
    subplot(4,1,1)
    plot(wave1,'rs', 'MarkerFaceColor','r');
    xlabel('Time');
    ylabel('wavelet X');
    subplot(4,1,2)
    plot(wave2,'rs', 'MarkerFaceColor','g');
    xlabel('Time');
    ylabel('wavelet Y');
    subplot(4,1,3)
    plot(wave3,'rs', 'MarkerFaceColor','b');
    xlabel('Time');
    ylabel('wavelet Z');
    subplot(4,1,4)
    plot(wave4,'rs', 'MarkerFaceColor','c');
    xlabel('Time');
    ylabel('wavelet PPG');
    %hold all

    #2
    پاسخ : پردازش سیگنال با موجک در متلب

    سلام
    فایلی که خودت ساختی رو نمیتونی با متلب باز کنی؟
    من برای نوشتن توی فایل تکست از دستور dlmwrite و برای خوندن از همون فایل از دستور dlmread استفاده می کنم که پارامترهای این دستورات کار ذخیره و بازیابی فایل دیتا رو خیلی راحت می کنه. پیشنهاد می کنم شما هم از همین دستورات استفاده کنید.
    ---------------------
    وقتی از پارامتر w برای بازکردن فایل استفاده می کنی، اگه میخوای از همون فایل بخونی اول باید فایل رو با دستور fclose ببندی و دوباره با پارامتر r بازش کنی.
    لطفاً برای انجام پروژه های دانشجویی پیام خصوصی نفرستید.
    لطفاً سؤالاتی که در انجمن قابل طرح شدن هستند پیام خصوصی نکنید.
    با تمام وجود گناه کرديم اما نه نعمتش را از ما گرفت نه گناهان ما را فاش کرد اطاعتش کنيم چه مي کند؟"دکتر شريعتي"
    اگر جايي که ايستاده ايد را نمي پسنديد، عوضش کنيد شما درخت نيستيد!! "پاسكال"
    يا به اندازه ي آرزوهايت تلاش کن يا به اندازه تلاشت آرزو کن. "شکسپير"

    دیدگاه

    لطفا صبر کنید...
    X