doans / MoDANet

In the paper, a multi-task deep convolutional neural network, namely MoDANet, is proposed to perform modulation classification and DOA estimation simultaneously. In particular, the network architecture is designed with multiple residual modules, which tackle the vanishing gradient problem. The multi-task learning (MTL) efficiency of MoDANet was evaluated with different variants of Y-shaped connection and fine-tuning some hyper-parameters of the deep network. As a result, MoDANet with one shared residual module using more filters, larger filter size, and longer signal length can achieve better performance of modulation classification and DOA estimation, but those might result in higher computational complexity. Therefore, choosing these parameters to attain a good trade-off between accuracy and computational cost is important, especially for resource-constrained devices. The network is investigated with two typical propagation channel models, including Pedestrian A and Vehicular A, to show the affect of those channels on the efficiency of the network. Remarkably, our work is the first DL-based MTL model to handle two unrelated tasks of modulation classification and DOA estimation. Please cite the papar as:
10 stars 2 forks source link

About Dataset Generation #1

Open Pragmatism0220 opened 1 year ago

Pragmatism0220 commented 1 year ago

Hello! I have recently been working on modulation classification and DOA estimation using neural networks, and have noted your excellent work. I downloaded the dataset you provided on IEEE and successfully completed the training. But I'm not sure how your dataset was generated. I tried to generate some data in Matlab R2022a using comm, qammod, qpskmod, and other functions, but it seems to be inconsistent with the data you provided. I used a portion of the dataset provided by you as a validation set for the trained network, and the results were very good. However, if I used the data generated by myself, it would be almost difficult to identify the modulation mode, but the DOA estimation is very accurate. So if possible, are you willing to open source the code that generates the dataset? This will be very helpful for my work, thank you!

doans commented 1 year ago

Hi, Thank you for your email and your interest in our work. We are glad to hear that you found our dataset and Matlab code useful for your research. However, we regret to inform you that the code for generating the dataset is a part of our project and we cannot share it with you. We understand that generating the dataset can be challenging, but unfortunately, we cannot make an exception in this case. However, if you are still interested in obtaining the code, we can offer it for purchase. We appreciate your understanding and hope that our dataset and code have been helpful for your research. If you have any further questions or concerns, please do not hesitate to let us known

On Mon, Mar 20, 2023 at 6:12 PM Pragmatism0220 @.***> wrote:

Hello! I have recently been working on modulation classification and DOA estimation using neural networks, and have noted your excellent work. I downloaded the dataset you provided on IEEE and successfully completed the training. But I'm not sure how your dataset was generated. I tried to generate some data in Matlab R2022a using comm, qammod, qpskmod, and other functions, but it seems to be inconsistent with the data you provided. I used a portion of the dataset provided by you as a validation set for the trained network, and the results were very good. However, if I used the data generated by myself, it would be almost difficult to identify the modulation mode, but the DOA estimation is very accurate. So if possible, are you willing to open source the code that generates the dataset? This will be very helpful for my work, thank you!

— Reply to this email directly, view it on GitHub https://github.com/doans/MoDANet/issues/1, or unsubscribe https://github.com/notifications/unsubscribe-auth/ADZ2ZNR57GZHAAHOYNBX3T3W5A3RHANCNFSM6AAAAAAWA53PPA . You are receiving this because you are subscribed to this thread.Message ID: @.***>

Pragmatism0220 commented 1 year ago

May I ask if the input modulated signal is a random 01 sequence or a fixed sequence? For example, for QFSK and 8FSK modulation, the signal bits before and after modulation are different, but it is necessary to ensure that the data format is 1024 bit long. How is this handled?

Pragmatism0220 commented 1 year ago

Taking the 16QAM modulation method as an example, my code generation logic is as follows

function signal = gen_16QAM(M, thetaS, SNR)
    N = 1024;
    mod_order = 16;
    msg = randi([0 mod_order-1], 1, N);
    thetas = [thetaS];
    lambda = 10;
    d = lambda / 2;
    s = [awgn(qammod(msg, mod_order, 'UnitAveragePower', true), SNR, 'measured')];  % QAM
    A = exp(-1i * 2 * pi * d * (0:M-1)' * sin(thetas * pi / 180) / lambda);
    St = A*s;  % 5 * 1024
    signal = zeros(N, M, 2, 'single');

    for i = 1:M
        for j = 1:N
            signal(j,i,1) = real(St(i,j));
            signal(j,i,2) = imag(St(i,j));
        end
    end
end

Did I do anything wrong? Thanks a lot! This has really bothered me for a long time...

doans commented 1 year ago

Hi, Thank you for asking and sorry for the late reply. I found a problem in your code in that you added noise before performing a signal received. s = [awgn(qammod(msg, mod_order, 'UnitAveragePower', true), SNR, 'measured')]; % QAM; The noise should be added after this line: St = As; % 5 1024.