1. 程式人生 > >簡單的把矩陣分解成一個正交矩陣和一個對角線全為1的上三角矩陣

簡單的把矩陣分解成一個正交矩陣和一個對角線全為1的上三角矩陣

function [He Xx] = GQR(A)
% param A : 是一個可逆矩陣
% return He : 是一個滿足每兩個不同列向量的內積為0的矩陣
% return Xx : 是一個主對角線全為1的上三角矩陣
% function : 分解 A = He * Xx
% CopyRight : edu.nust.cs726.JunH(111060881)


[H L] = size(A);
if H ~= L
    error('hehehe');
end


if det(A) == 0
    error('hahaha');
end


BIJ = eye(H);
B = zeros(H, L);
B(:, 1) = A(:, 1);
for R = 2:L
    ar = A(:, R);
    br = ar;
    for K = 1:R-1
%         disp(ar)
%         disp(B(:, K));
%         disp(' ');
%         disp(' ');
        bij = Gb(ar, B(:, K));
        BIJ(K, R) = bij;
        br = br - bij*B(:, K);
    end
    B(:, R) = br;
end
He = B;
Xx = BIJ;


function  bij = Gb(aierfa, beita)
if 1 == size(aierfa, 1) && 1 == size(beita, 1)
    bij = (aierfa*beita') / (beita*beita');
else
    bij = (aierfa'*beita) / (beita'*beita);
end

相關推薦

簡單矩陣分解一個矩陣一個對角線1三角矩陣

function [He Xx] = GQR(A) % param A : 是一個可逆矩陣 % return He : 是一個滿足每兩個不同列向量的內積為0的矩陣 % return Xx : 是一個主對角線全為1的上三角矩陣 % function : 分解 A = He *

怎麽mp4轉換gif格式?教你一個簡單的解決方法

roc shadow 視頻格式 mar 教你 在線 下載 找到 col 怎麽把mp4轉換成gif格式當我們有關於mp4格式的文檔怎麽轉換成gif格式的呢?下面小編就簡單給大家介紹一下。 輔助工具:迅捷PDF在線轉換器 步驟一:我們可以將需要轉換的mp4格式的文件進行保存到桌

訊號分解:雙、完備性、對偶向量

1.訊號分解及完備性 設是X由一組向量所張成,即: 如果線性獨立,我們則稱它們為空間中的一組基”。 那麼訊號x可以離散表示如下: 若是一組兩兩互相正交的向量,展式稱為x的正交展開。分解係數是在

【線性代數】標準矩陣與Gram-Schmidt

1、標準正交矩陣     假設矩陣Q有列向量q1,q2,...,qn表示,且其列向量滿足下式:      則      若Q為方陣,由上面的式子則有       我們舉例說明上述概念:       2、標準正交矩陣的好處     上面我們介紹了標準正交矩陣,那麼標準正交矩

陣列分割, 陣列分解相等的兩部分--動態規劃方法

#include "stdafx.h" #include "stdlib.h" #include <stack> using namespace std; bool isSubsetSplit(int A[], int len, int sum, stack&

scala序列分解子集(group by,partition)

Problem     你想要基於一種演算法或者規則,把一個序列切分為兩個或者多個子集。 Solution     使用groupBy,partition,span,splitAt方法可以把一個集合切分成子集合。sliding和unzip方法也可以用來把集合切分成子集合,儘

MIT 線性代數導論 第十四講:向量子空間

第十三講是第一部分(主要是線性代數的基礎知識,四個子空間的關係)的複習課,所以沒有做記錄 本講的主要內容: 向量正交的定義以及證明方法 子空間正交的概念以及關於行空間、零空間的一些結論 向量正交 兩個向量正交的概念很直觀,就是:兩個向量的夾角為90° 線上性

輸入一個整數n,輸出一個最小整數m,使得m的各位乘積等於n

/* 1.:編寫一個函式func,輸入一個正整數n,返回一個最小的正整數m,使得m的各位乘積等於n,例如輸入100.輸出455,輸入36,輸出49 */ #if 0 int func(int

利用SVD矩陣分解進行k次交叉實驗Top—N推薦

如果上一節沒看的,請先看上一節Surprise專案的使用。本文利用開源GitHub專案Surprise。 上一節說到具體的安裝和一些方法的屬性,本節將以SVD為例具體的程式碼demo的實現。 先說下如何利用Surprise載入本地資料集進行k次交叉實驗,如果看下API,

一個神奇代碼一個坑爹代碼

神奇 python 5.1 分享圖片 caml space java bsp perl 上述代碼會運行一次生成一種語言代碼,最後運行回了ruby代碼。11種如下: ruby 1.8.7-p72、Python 2.5.2、perl v5.10.0、Lua 5.0.3、OC

TCP報文格式三次握手——三次握手三個tcp包(header+data),此外,TCP 報文段中的數據部分是可選的,在一個連接建立一個連接終止時,雙方交換的報文段僅有 TCP 首部。

pan 內容 由於 clas nts data 奇偶校驗 rom 加載中 from:https://blog.csdn.net/mary19920410/article/details/58030147 TCP報文是TCP層傳輸的數據單元,也叫報文段。 1、端口號:用來標

for迴圈查詢資料庫,結果放在集合裡面,但是集合的長度卻始終1

for (int i = 0; i < tell.length; i++) { String sql=""; if(tell[i]=="地址為45號"||tell[i]=="地址為23號"||tell[i]=="地址為31號"||tell[i]=="地址為50號

duilib中將xml封裝控制元件簡單示例(簡單自定義控制元件,封裝幾個基本控制元件合1個自定義控制元件)

使用duilib的時候,難免會有這樣的需求: 某一塊Container(Layout)以及裡面的佈局需要重複用,不想每次都複製貼上這麼多,要不然xml太大了; 通過繼承來自定義一個控制元件,比如CButtonUIEx之類的,想讓他像button一樣在xml中被識別; xml裡面的東西

一個文字串S一個模式串P,要查詢P在S中的位置——KMP演算法

關鍵是求解NEXT陣列  Next陣列就是當前字元之前的字串中,有多大長度的相同字首與字尾 public class KMP { /** * KMP演算法的實現 */ /** * 求解NEXT陣列 */ private static void getNex

一個文字串S一個模式串P,要查詢P在S中的位置—暴力破解法

public class StringMatch { /** * 暴力匹配法 */ private static int StringMa(String s,String p){ int SLen = s.length(); int PLen = p.lengt

給定一個整數數組一個目標值,找出數組中和目標值的兩個數

目標 for循環 答案 [] 遍歷 一個 class tar 利用 題目描述: 給定一個整數數組和一個目標值,找出數組中和為目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重復利用。示例:給定 nums = [2, 7, 11, 15], targ

Problem D: 判斷三角矩陣

#include<stdio.h> int main() { int n,a[10][10],i,j; while(scanf("%d",&n)!=EOF) { int flag=1; //flag用來做自動判斷 for(

1125: 三角矩陣的判斷

1125: 上三角矩陣的判斷 題目描述 編寫程式,輸入一個正整數n(1<=n<=10)和n階方陣a中的元素,如果a是上三角矩陣,輸出“YES”,否則,輸出“NO”。 上三角矩陣即主對角線以下(不包括主對角線)的元素都為0的矩陣,主對角線為從矩陣的左上角至右下角的連線。 要

劍指off:在一個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從到下遞增的順序排序。請完成一個函式,輸入這樣一個二維陣列和一個整數,判斷陣列中是否含有該整數

題目描述 在一個二維陣列中(每個一維陣列的長度相同),每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成一個函式,輸入這樣的一個二維陣列和一個整數,判斷陣列中是否含有該整數。 思路: 從左下角x開始尋找,x為此列最大數字,此行最小數字。如果目