Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Математические пакеты > [matlab]Генерация матрицы и её изменение


Автор: ddj 22.3.2012, 17:24
Добрый день,
Генерирую матрицу:

Код

n = 4;  
p = 0.15; 

G = rand(n,n) < p;
full(G)


Получаю матрицу. Например:
0 1 1 1
1 0 0 0
1 0 0 0
0 1 0 0

Как сейчас с этой матрицы получить такую:

0 1/3 1/3 1/3
1   0    0    0
1   0    0    0
0   1    0    0

Поясню: сумма строк ровна 1, тоесть  1/k, где k - количество едениц в строке.
Спасибо.

Автор: W4FhLF 22.3.2012, 20:12
Это вы хотите сделать?

Код

>> v = [0 1 1 1];
>> v/size(find(v==1),2)

ans =

                         0         0.333333333333333         0.333333333333333         0.333333333333333

Автор: ddj 23.3.2012, 10:10
в этом направлении.
Только визде в матрице, если например 2 и 3 строки матрицы имели бы не по одной 1 а по две, то там тоже нада было уменшить на k.

0 1 1 0
1 1 1 1
0 0 0 0
1 1 1 0

--->

0     1/2  1/2   0
1/4  1/4  1/4  1/4
0      0     0     0
1/3  1/3  1/3   0

Автор: W4FhLF 23.3.2012, 11:10
Пройдитесь по строкам и примените операцию к каждой строке. Отдельно нужно учесть случай когда единиц нет вообще, чтобы не получилось деление на ноль.

Автор: ddj 23.3.2012, 12:24
Код

>> v = [0 1 1 1];
>> v/size(find(v==1),2)


что сдесь значет эта двойка ? (find(v==1),2) ?

Цитата

Пройдитесь по строкам и примените операцию к каждой строке. 


А как с матрицы достать все строки ?
Если их будет например: 100 - 500

Автор: W4FhLF 23.3.2012, 13:43
Цитата
что сдесь значет эта двойка ? (find(v==1),2) ?


> doc size

Строки достать в цикле. i-ый вектор со строкой из матрицы можно получить так: row_i = A(i,: )

Автор: Одуванчик 29.5.2013, 23:53
Помогите написать программу в МатЛабе чтобы:

Заменить столбцы,имеющие четное количество отрицательных элементов столбцом,где находится минимальный элемент матрицы 9х14.

П.С. Без вас не справлюсь( 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)