MATLAB: Как представить определенные интервалы в полосе частот в виде импульсов? - PullRequest
0 голосов
/ 03 мая 2019

Я работаю над проектом и хочу построить / отобразить в частотном диапазоне, импульсы которого определяются начальной и конечной частотой.

Пояснения: У меня есть X групп, и каждая группа содержит Y сетей. У моей группы есть начало и конец. В каждой сети есть полоса.

У меня 2 группы. Первая группа содержит 4 сети, а вторая 9 сетей. Моя группа начинается с 30 МГц и заканчивается на 88 МГц. Для первой группы каждая сеть имеет полосу W МГц, а для второй группы каждая сеть имеет полосу Z МГц. Мне нужно представление, где есть импульс, когда есть полоса.

Я должен разделить по 30 кГц каждую сеть и разделить группы на 7% ((quencyStopPreviousGroup * 0,07) +quencyStopPreviousGroup).

Когда есть разделение, я не хочу пульс.

Каждая сеть находится в «группе» ячейки, а ячейки группы - в глобальной ячейке.

Моя проблема: Я не знаю, с чего начать и какую функцию я могу использовать для создания представления по частям моей проблемы?

Я знаю, что мой код ниже не оптимизирован, но работает так, как я хочу.


    D_format = 11389527,26654; % 11,389 MHz by example

    % We divide D by the number of networks of each group to know what band have a network.

    % Global cell which contains each cellOfRange
    global_cellOfRange = cell(1, max(group));

    % For each group 
    for current_group = 1 : max(group)

        % We divide D by the number of networks in the current group
        networkXRange = D_format / size_of_group(current_group);

        networkXRange_format = networkXRange

        % Cell with the start and stop of each network
        cellOfRange = cell(4, size_of_group(current_group));

        % If it is the first group
        if current_group == 1

            % For each network
            % size_of_group(current_group) = the number of network in the current group
            for numberOfNetwork = 1 : size_of_group(current_group)

                % If it is the first network
                if numberOfNetwork == 1

                    frequencyStartNetwork = 30000000; % 30 MHz
                    frequencyStopNetwork = frequencyStart_1 + networkXRange_format;
                end

                % If it is an other network
                if numberOfNetwork > 1

                    % Margin
                    frequencyStart_1xMargin = 30000; % 30 KHz

                    % We add the margin for the next network
                    frequencyStartNetwork = frequencyStopNetwork + frequencyStart_1xMargin;
                    frequencyStopNetwork = frequencyStartNetwork + networkXRange_format;
                end

                % We print in a matrix the range for each network in the current group
                cellOfRange{1,numberOfNetwork} = ['Network' int2str(numberOfNetwork)];
                cellOfRange{2,numberOfNetwork} = ' ';
                cellOfRange{3,numberOfNetwork} = 'Frequency Start (Hz)';
                cellOfRange{4,numberOfNetwork} = double(frequencyStartNetwork);
                cellOfRange{5,numberOfNetwork} = ' ';
                cellOfRange{6,numberOfNetwork} = 'Frequency Stop (Hz)';
                cellOfRange{7,numberOfNetwork} = double(frequencyStopNetwork);

                % Start frequency of the first network of the next group
                frequencyStartNextGroup = frequencyStopNetwork + (frequencyStopNetwork * 0.07); % 0.07 = 7 %
            end

        % If we aren't at the first group 
        else

            % For each network
            % size_of_group(current_group) = the number of network in the current group
            for numberOfNetwork = 1 : size_of_group(current_group)

                % If it is the first network
                if numberOfNetwork == 1

                    frequencyStartNetwork = frequencyStartNextGroup;
                    frequencyStopNetwork = frequencyStartNetwork + networkXRange_format;
                end

                % If it is not the first network of the group
                if numberOfNetwork > 1

                    frequencyStart_1xMargin = 30000; % 30 KHz

                    % We add the margin for the next network
                    frequencyStartNetwork = frequencyStopNetwork + frequencyStart_1xMargin;
                    frequencyStopNetwork = frequencyStartNetwork + networkXRange_format;
                end

                % We print in a matrix the range for each network in the current group

                cellOfRange{1,numberOfNetwork} = ['Network' int2str(numberOfNetwork)];
                cellOfRange{2,numberOfNetwork} = ' ';
                cellOfRange{3,numberOfNetwork} = 'Frequency Start (Hz)';
                cellOfRange{4,numberOfNetwork} = double(frequencyStartNetwork);
                cellOfRange{5,numberOfNetwork} = ' ';
                cellOfRange{6,numberOfNetwork} = 'Frequency Stop (Hz)';
                cellOfRange{7,numberOfNetwork} = double(frequencyStopNetwork);
            end
        end

         % current_group % DEBUG

         % We store cells in a global cell
         global_cellOfRange{1,current_group} = cellOfRange;

         % If it is not the last group
        if current_group < max(group)

            % Start frequency of the first network of the next group
            frequencyStartNextGroup = frequencyStopNetwork + (frequencyStopNetwork * 0.07);
        end

        %disp(['global_cellOfRange = ' global_cellOfRange]);%DEBUG

    end

Я думаю, что это хорошая база, но я потерян для этой части.

Спасибо за потраченное время на мою проблему!

Каан

...