-2

Bipolar-RZをチェックするコードを書いています。0 の場合は何も起きませんが、1 の場合は中間で正の電圧から 0 へ、次に負の電圧から 0 の電圧への遷移が発生します。したがって、私がこれにアプローチした方法は、たとえばb=[0 1 0 1 1 0 1]. あなたが持っているものの数を計算します。次に、それらを for ループに入れて追加します。次に、if ステートメントを使用して、加算後の 1 の数が偶数か奇数かを確認してから遷移します。問題は、別の for ループを使用していて、for ループ (偶数と奇数をチェックするため) が別の for ループに入ることです。

また、iseven と isodd を使用するには、オンラインで検索しました。彼らはMATLABでコードを持っています。そうしないと、その機能は機能しません。リンクは次のとおりです。 http://www.mathworks.com/matlabcentral/fileexchange/35105-isevenisodd

誰かが返信してくれたら、本当にうれしいです。ありがとうございました

% for ibs, I'm using ibs=[0 1 0 0 1 1 0 0 0 1 1]

function output = lc_bi(ibs,tlc, Rb)

output=1;
numofbits=length(ibs);


%  Bipolar RZ coding

if isequal(tlc,'RZ')

    %for loop to calculate 1's
    y=0;
    for k=1:length(ibs)
        if ibs(k)==1
            y=y+1;
        end
    end

    oness=ones(1,y); %converting it in to list of ones


    samptime= 0.001;
    endtime= numofbits-samptime;
    t=0:samptime:endtime; 

    cycle= floor(length(t)/(numofbits-1));
    j=1;

    tran_in_middle= j+cycle/2;

    bit=1;
    for i=0:samptime:endtime
        if (floor(i)+1 ~=bit)
            tran_in_middle=j+cycle/2;
            bit=bit+1;
        end

        if (ibs(bit)==1)
            if(j< tran_in_middle)

                %put the loop her to check if itseven or odd
                %using the list of ones here and adding them to check for even and odd
                g=0;
                for h=1:length(oness)
                    g=g+1;
                    if isodd(g)==true
                        s(j) =Rb;
                        disp('+')
                    elseif isodd(g)==false

                        s(j)=-Rb;
                        disp('-')
                    end
                end
            else
                s(j) = 0;
            end

        end
        j=j+1;
    end

    plot(t,s);
    axis([0 numofbits -(Rb+1) (Rb+1)]);
    xlabel ('Time');
    ylabel ('Voltage');

end
4

1 に答える 1