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程序设计等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)