2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 заполнение матрицы в матлаб
Сообщение12.02.2019, 13:29 


21/07/09
300
Здравствуйте, уважаемые участники форума. Столкнулся с простой, но все же проблемой как заполнить матрицу используя средства векторизации Матлаб матрицы следующего вида.

$\begin{pmatrix}
 0& \frac{1}{a_{1}-a_{2}} &... &\frac{1}{a_{1}-a_{n}} \\
 \frac{1}{a_{2}-a_{1}}& 0 &...&\frac{1}{a_{2}-a_{n}} \\
 ......& ......& ......&......\\
 \frac{1}{a_{n}-a_{1}}& \frac{1}{a_{n}-a_{2}} &...&0
\end{pmatrix}$

где вектор $a_{1}... a_{n}$ задан. Подскажите как можно сделать это простейшим способом. Спасибо.

 Профиль  
                  
 
 Re: заполнение матрицы в матлаб
Сообщение12.02.2019, 15:36 


27/08/16
9426
Например, размножив ряд и столбец до полных матриц, вычислив всё с бесконечностями на диагонали, а потом заполнив диагональ нулями.

 Профиль  
                  
 
 Re: заполнение матрицы в матлаб
Сообщение12.02.2019, 16:00 
Экс-модератор
Аватара пользователя


23/12/05
12046
Если нигде не ошибся, то как-то так:
Используется синтаксис Matlab M
[A, B] = meshgrid(a,a);
d = length(a);
result =1./(B-A);
result(1:d+1:end) = 0;
 

 Профиль  
                  
 
 Re: заполнение матрицы в матлаб
Сообщение12.02.2019, 22:04 
Заслуженный участник
Аватара пользователя


01/09/13
4318
volchenok в сообщении #1375533 писал(а):
как заполнить матрицу используя средства векторизации Матлаб матрицы следующего вида

Зависит от версии - в последних можно просто
Используется синтаксис Matlab M
fillmissing(1./(a'-a),'constant',0)

 Профиль  
                  
 
 Re: заполнение матрицы в матлаб
Сообщение12.02.2019, 23:42 
Экс-модератор
Аватара пользователя


23/12/05
12046
Geen, не знал о существовании этой функции и не могу проверить, но прочитал описание и у меня сомнения, что ваш код даст корректный результат:
1) Насколько я понял, она заполняет NaN, NaT и подобные, но у нас будут Inf, которые не обрабатываются fillmissing()
2) Нам надо заменить не все Inf, а только те, которые вылезли на диагональ, а если какие-то значения в векторе $a$ совпадают, то они могут вылезти и в других местах.

 Профиль  
                  
 
 Re: заполнение матрицы в матлаб
Сообщение13.02.2019, 00:03 


27/08/16
9426
Geen в сообщении #1375681 писал(а):
Зависит от версии - в последних можно просто
In MATLAB® R2016b and later

Но всё равно менять все бесконечности на нули, в том числе, вне диагонали, некорректно.

 Профиль  
                  
 
 Re: заполнение матрицы в матлаб
Сообщение13.02.2019, 00:10 
Заслуженный участник
Аватара пользователя


01/09/13
4318
photon в сообщении #1375700 писал(а):
и у меня сомнения, что ваш код даст корректный результат

Да, Вы правы, надо подправить - в числителе не единицу надо взять, а 1-eye(n) (если считать, что в самом векторе нет nan'ов).

Хотя лучше написать один раз, отдельно, функцию для выставления диагонали в нужное значение/вектор - встречается достаточно часто такая нужда.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group