Matrix_Size=input('Enter a number to generate the desired matrix\n')
Iteration = 2 % This is to run the loop infinitely
while (Iteration>1)
Main_Matrix=sym(randi(7,3,3)) %7 is the range where the elements in my random matrix will occur
Rank_Matrix=rank(Main_Matrix)
if (Rank_Matrix == 2)
break
end
end
Main_Matrix
%random number with specific rank
close all;
clc;
clear;
rng(8);
y= randi(300,3,3);
display(y)
if rank(y)==2
y=y;
else
r = (randi(9)+1);
for i = 1:3
y(3,i)=r*y(1,i);
end
end
%random number with specific rank
%%plotting the figures column space - left null space
figure(1)
plot3([0 CS(1,1)],[0 CS(2,1)],[0 CS(3,1)],'r','linew',3)
hold on
plot3([0 CS(1,2)],[0 CS(2,2)],[0 CS(3,2)],'b','linew',3)
legend('CS - Column 1','CS - Column 2')
hold on
plot3([0 LNS(1,1)],[0 LNS(2,1)],[0 LNS(3,1)],'g','linew',3)
legend('CS - Column 1','CS - Column 2','LNS - Column 1')
title('Column Space - Left Null Space Plot')
hold off
%%matrix decalration and finding the column space, row space and null
%%space and left null space
clear;clc;clear all variables;
B=randi(16,3,2);
C=randi(16,2,3);
A=B*C;
rank(A);
Y=sym(A);
Y
CS = colspace(Y)
RS = colspace(Y')
NS = null(Y)
LNS = null(Y')
7条答案
按热度按时间i1icjdpr1#
我意识到,由于
randi(IMAX, m, n)
形成了一个m x n矩阵,其中包含尽可能多的主列,因此可以使用以下代码形成一个n x n矩阵A,其中包含k个主列和介于1和IMAX之间的随机元素:因为
randi(IMAX, n, k)
和randi(IMAX, k, n)
都只有k
透视列,所以它们的乘积也只有k个透视列。vmpqdwk32#
一种(公认的低效)方法可能是生成完整的矩阵(在您的例子中为4x4),然后使用SVD分解将其分离,并将一些奇异值(在您的例子中为2个元素)归零。
py49o6xq3#
或者,如果您对控制生成的矩阵的奇异值感兴趣,可以使用测试矩阵库中的randSVD函数:(链接)
vmpqdwk34#
这就是我如何创建一个循环,直到和除非它创建了一个随机矩阵2。你可以根据需要改变数字。(注意:矩阵的秩不能大于矩阵的大小)
下面是Matlab代码:
alen0pnh5#
k75qkfdt6#
qcbq4gxm7#