Как рассчитать результат для каждого значения в матрице в MATLAB - PullRequest
0 голосов
/ 03 июля 2010

Проще говоря, возьмите матрицу из них:

U_iso = ones(72,37)

и некоторые параметры

ThDeg = 0:5:180;
dtheta = 5*pi/180;
dphi = 5*pi/180;
Th = ThDeg*pi/180;

Теперь код равен

omega_iso = 0;
for i = 1:72
    for j=1:37
        omega_iso = omega_iso + U_iso(i,j)*sin(Th(j))*dphi*dtheta;
    end
end

и

D_iso = (4 * pi)/omega_iso

Этот код в порядке.Взять матрицу размером 72 * 37.Петля является приближением интеграла, который дополнительно делится на 4pi, чтобы получить ОДНО значение направленности антенны.

Теперь этот код дает одно значение, которое будет около 1,002.

Моя проблема в том, что мне не нужно 1 значение.В качестве ответа мне понадобится матрица 72 * 37, где приведенное выше интегральное приближение реализовано в каждой ячейке матрицы 72 * 37.и, следовательно, Directviity 'D' также приводит к матрице одинакового размера, в которой каждая ячейка дает одно и то же значение.

Поэтому все, что нам нужно сделать, это вместо получения 1 значения, нам нужно значение в каждой ячейке.

Может кто-нибудь помочь, пожалуйста.

1 Ответ

2 голосов
/ 03 июля 2010

Вы говорите о создании результата, который является функцией по существу от элементов U. Однако нигде этот код не зависит от элементов U. Посмотрите внимательно на то, что вы написали. Несмотря на то, что вы используете переменную U_iso, нигде в этом коде не используется ни один элемент U, как вы его написали.

Итак, когда вы говорите об определении этого для матрицы U, это определение не имеет смысла. Пока что кажется, что вызов repmat в самом конце создаст матрицу желаемого размера, и, очевидно, это не то, что вы ищете.

Возможно, вы пытались упростить задачу для простоты объяснения. Но то, что вы сделали, это слишком упростило, не оставив нас с чем-то, что даже имело смысл. Пожалуйста, объясните вашу проблему более четко и покажите код, который соответствует вашему объяснению, для лучшего ответа, чем я могу дать до сих пор.

(Примечание: МОЖЕТ быть вариант использования arrayfun. Или ответ на этот вопрос может быть более тривиальным, с использованием простых векторизованных операций. Я не могу знать на данный момент.)

EDIT:

Ваш вопрос все еще остается без ответа. Этот цикл создает один скалярный результат, по существу суммируясь по всему массиву. Вы не говорите, что имеете в виду, чтобы интеграл вычислялся для каждого элемента U_iso, поскольку вы уже суммируете по всему массиву. Пожалуйста, учитесь быть точными в своих вопросах, иначе мы просто угадаем, что вы имеете в виду.

Мое лучшее предположение на данный момент состоит в том, что вы можете вычислить кумулятивный интеграл в двух измерениях. Cumtrapz может помочь вам, ЕСЛИ это ваша цель. Но я не уверен, что это ваша цель, поскольку ваши объяснения настолько неполны.

Вы говорите, что хотите получить одинаковое значение в каждой ячейке результата. Если это то, что вы хотите, то вызов repmat в конце будет делать то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...