Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 28.03.2016
Сообщений: 7

SVD - разложение. Матлаб

04.01.2017, 18:25. Показов 2516. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Занимаюсь SVD-разложением без использования стандартной функции svd.
Матрица имеет размер m x n. Если m < n программа вроде работает, а в другом случае при нахождении матрицы S у меня теряются столбцы. Кто-нибудь может посмотреть, дать совет, что и как вообще.
Код привожу ниже:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
A = [0.96 1.72 0.41; 2.28 0.96 0.85]
[m, n] = size(A);
V = zeros(m,n);
[D1, V1] = eig(A'*A);
D = D1(:,end:-1:1);
V1 = V1(end:-1:1,end:-1:1);
V = V1(1:min(m,n),1:n).^0.5;
S = A*D/V;
disp('Матрица S:'); disp(S);
disp('Матрица V:'); disp(V);
disp('Матрица D:'); disp(D);
disp('Проверка: ');disp(S * V * D');
[a,b,c] = svd(A);
disp('Встроенная функция: ');
disp('Матрица S:'); disp(a);
disp('Матрица V:'); disp(b);
disp('Матрица D:'); disp(c);
end
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.01.2017, 18:25
Ответы с готовыми решениями:

Открыть txt-файл при его формировании в матлаб и сохранении вне матлаб
С помощью операторов fopen, fprintf и fclose в файл &quot;Press.txt&quot; записана текстовая информация : variables={'1.Первый', ' 2.Второй',...

openocd + cmsis-svd
В openocd, кроме встроенного gdb сервера, есть также встроенные telnet сервер и скриптовый язык tcl. Это позволяет делать отладку и...

При запуске матлаб через какое-то время физическая память доходит до 100% и матлаб вырубается и происходит дамп
При запуске матлаб через какое-то время физическая память доходит до 100% и матлаб вырубается. При этом в нем не запускаются никакие файлы....

7
 Аватар для Krasme
7247 / 5100 / 2151
Регистрация: 02.02.2014
Сообщений: 13,464
04.01.2017, 19:02
Цитата Сообщение от IlnurSultan Посмотреть сообщение
V = V1(1:min(m,n),1:n).^0.5;
по строкам минимум из m,n нашли, а по столбцам не надо?
0
0 / 0 / 0
Регистрация: 28.03.2016
Сообщений: 7
04.01.2017, 21:13  [ТС]
Цитата Сообщение от Krasme Посмотреть сообщение
по строкам минимум из m,n нашли, а по столбцам не надо?
Так вроде по размеру косяк будет.
Если A имеет размер m x n, то:
S - должен иметь размер m x m
V - m x n
D - n x n
0
 Аватар для Krasme
7247 / 5100 / 2151
Регистрация: 02.02.2014
Сообщений: 13,464
04.01.2017, 21:15
Matlab M
1
V(1:min(m,n),1:n) = V1(1:min(m,n),1:n).^0.5;
0
0 / 0 / 0
Регистрация: 28.03.2016
Сообщений: 7
04.01.2017, 21:20  [ТС]
Цитата Сообщение от Krasme Посмотреть сообщение
V(1:min(m,n),1:n) = V1(1:min(m,n),1:n).^0.5;
Так S неправильно находит для m > n
0
 Аватар для Krasme
7247 / 5100 / 2151
Регистрация: 02.02.2014
Сообщений: 13,464
04.01.2017, 21:27
Цитата Сообщение от IlnurSultan Посмотреть сообщение
Если m < n программа вроде работает,
так тоже не работает, сравните свои s и d с результатом встроенной функции
0
0 / 0 / 0
Регистрация: 28.03.2016
Сообщений: 7
04.01.2017, 21:30  [ТС]
Цитата Сообщение от Krasme Посмотреть сообщение
так тоже не работает, сравните свои s и d с результатом встроенной функции
Не совпадает только знаками.
А при проверке S*V*D' получается та же матрица А
0
 Аватар для Krasme
7247 / 5100 / 2151
Регистрация: 02.02.2014
Сообщений: 13,464
04.01.2017, 23:33
Лучший ответ Сообщение было отмечено IlnurSultan как решение

Решение

1. если уж "изобретать велосипед", т.е. алгоритм встроенных формул, то и знаки должны быть соответствующие...
2. читать встроенный справочник тоже очень полезно
[U,S,V] = SVD(X,0) produces the "economy size"
decomposition. If X is m-by-n with m > n, then only the
first n columns of U are computed and S is n-by-n.
For m <= n, SVD(X,0) is equivalent to SVD(X).
окончательный код
Кликните здесь для просмотра всего текста
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
clc; clear all;
A = [0.96 1.72 0.41; 2.28 0.96 0.85]'
 
[m, n] = size(A);
[D1, V1] = eig(A'*A);
 
D = D1(:,end:-1:1);
D(:,1:2:end)=sign(m-n)*D(:,1:2:end);
 
V1 = V1(end:-1:1,end:-1:1);
V = V1(1:min(m,n),:).^0.5;
 
S = A*D/V;
 
[a,b,c] = svd(A,0);
 
disp('Матрица S, a:'); disp([S a]);
disp('Матрица V, b:'); disp([V b]);
disp('Матрица D, c:'); disp([D c]);
disp('Проверка: ');disp([(S * V * D') (a * b * c')]);

для другой размерности матрицы снимите знак транспонирования
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.01.2017, 23:33
Помогаю со студенческими работами здесь

SVD матрицы. Ошибка с размерностью
Здравствуйте нужна ваша помощь в исправлении ошибки в коде. Доступ к коду по ссылке: https://pastebin.com/raw/6CkTd3Y3 ...

RDotNet. Вызов функции svd()
Здравствуйте. На языке R существует функция сингулярного разложение матрицы svd(). В Rstudio результат получается как на рисунке 1...

матлаб
Привет,ребят помогите пожалуйста исправить ошибку в функции. x=1:0.1:2; ...

Шифрование в матлаб
Нужно составить алгоритм шифрования матричным способом изображения оттенков серого и реализовать его в матлаб.Приведите пожалуйста пример...

графики а матлаб
Создать файл сценария, который строит множество точек , координаты которых удовлетворяют следующему неравенству: |y|+2*|x|=&lt;x^2 +1


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru