matlab 用命令orth把向量组正交规范化

matlab 用命令orth把向量组正交规范化,第1张

1、在命令行窗口中输入“r = [ 1 2 3 4 ];tr = r'”,其中单引号(')是用于转置 *** 作的。

2、按回车键之后,可以看到将行向量r转置成为了列向量tr。

3、也可以将列向量转置成为行向量,在命令行窗口中输入“v = [1;2;3;4];tv = v'”。

4、按回车键之后,可以看到将列向量v转置成为了行向量tv。

5、矩阵转置的 *** 作也是通过单引号(')来实现的。

6、按回车键之后,可以看到将a矩阵的每列转置成了b矩阵的每行,a矩阵的每行转置成了b矩阵的每列。

这个不难,

正交矩阵A,

有A'(A的转置)=A^-1(A的逆),

等价条件是A的各列是单位向量且两两正交

已知第一列的元素都是1/2,

这个矩阵是不可能成为正交矩阵的

假设第一列的元素是一样的,

那么随机产生5个长为6的列向量,

根据Gram-Schmidt算法计算对应的正交单位向量

(这个算法很简单),

如果产生的单位向量中有相等的(这个概率其实比较小),

那么就舍弃那个对应的列向量,

而再随机产生一个列向量计算对应的正交归一化向量

这样直到你凑齐6个(包括已知的那个)不一样的正交归一化列向量,

就得到你的正交矩阵了

clc

clear

close all

Tb = 1;

Ns = 10;

fs = Ns/Tb; % 采样频率

A = 2;

t0 = (0:1/fs:Tb-1/fs);

%% 正交信号

s0 = Aones(1,10); % 正交信号s0

s1 = [Aones(1,5) -1Aones(1,5)]; % 正交信号s1

% figure

% subplot(211);

% plot(t0,s0)

% subplot(212);

% plot(t0,s1)

%% 编码

N = 50; % 采样点数

code = [1,-1,1,1,-1]; % 5个code

for kc = 1:5

if code(kc)==1

x(Ns(kc-1)+1:kcNs) = s0;

else

x(Ns(kc-1)+1:kcNs) = s1;

end

end

%% 加噪声

% t = 0:1/fs:1/fsN-1/fs;

Nt = 1:N;

index2 = 10:10:50;

index2 = index2+2;

Nt2 = 1:5;

deta = [0,01,10,20];

for kd=1:4

noise = sqrt(deta(kd))randn(1,N); % 噪声

y = x+noise; % 输出信号

% y=x;

%% 相关

for ks = 1:5

z0(ks) = y(Ns(ks-1)+1:ksNs)s0'/10;

z1(ks) = y(Ns(ks-1)+1:ksNs)s1'/10;

end

% z0 = xcorr(y,s0);

% z1 = xcorr(y,s1);

str0 = ['噪声方差:' num2str(kd),'与s0相关结果'];

str1 = ['噪声方差:' num2str(kd),'与s1相关结果'];

figure

subplot(211);

stem(Nt2,z0)

title(str0)

subplot(212);

stem(Nt2,z1)

title(str1)

end

你可以看看这个,你怎么和之前别人提的问题一样啊

以上就是关于matlab 用命令orth把向量组正交规范化全部的内容,包括:matlab 用命令orth把向量组正交规范化、matlab如何随机产生一个正交矩阵,且第一列是取定的元素、求大神做matlab程序设计等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9746389.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存