作业帮 > 综合 > 作业

如何在MATLAB下构造一个m*n的托普利兹矩阵,该矩阵元素为+1和-1

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/11 16:16:38
如何在MATLAB下构造一个m*n的托普利兹矩阵,该矩阵元素为+1和-1
% 托普利兹(Toeplitz)矩阵除第一行第一列外,
% 其他每个元素都与左上角的元素相同.
% 即主对角线上的元素相等,
% 平行于主对角线的线上的元素也相等.
>>m = 5; n = 6;
A = toeplitz(1:m,1:n);
A(A>A(1,1)) = -1
再问: 您这程序我运行了,不对啊,最后一行就是将所有元素和A(1,1)比较,比A(1,1)大的就置零,但其他元素肯定都比A(1,1)大啊,所以您这个程序运行的结果就是第一行第一个元素为1,其他都为零,然后就按第一行移位就行了,结果应该如下: 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 -1
再答: m = 5; n = 6; % 运行后是这样的结果啊(比A(1,1)大的就置-1) A = toeplitz(1:m,1:n); A(A>A(1,1)) = -1 A = 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 -1
再问: 但是你这种方法产生的矩阵第一行就不具有+1和-1的随机性了,第一行永远都是 1 -1 -1 -1 -1 -1 而托普利兹矩阵的定义是第一行元素是+1和-1的随机序列,大致各占二分之一。你这种方法构造的矩阵显然不符合要求啊
再答: % 下面可否! m = 5; n = 6; mx = max(m,n); mi = min(m,n); a = randint(1,mx,[0 1]); b = a(1:n); A = toeplitz(a,b); A(A==0) = -1