2014 dxdy logo

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

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




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


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

$\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
4876
Например, размножив ряд и столбец до полных матриц, вычислив всё с бесконечностями на диагонали, а потом заполнив диагональ нулями.

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


23/12/05
10804
Если нигде не ошибся, то как-то так:
Используется синтаксис 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
2112
volchenok в сообщении #1375533 писал(а):
как заполнить матрицу используя средства векторизации Матлаб матрицы следующего вида

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

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


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

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


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

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

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


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

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

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

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

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



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

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


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

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