我需要在y = x线附近生成一些随机2D点(例如30个点),将它们插入矩阵,绘制它然后计算矩阵的SVD。但由于我是MATLAB的新手,我不知道如何生成我想要的矩阵。
答案 0 :(得分:3)
由于这看起来像家庭作业,我只是在这里发布一些一般性的想法。
randi
可用于获取半随机整数。使用它可以通过复制数组并将它们放在一起来创建2D矩阵。因此:生成30x1列并将其复制到30x2列。所有行都将具有相同的两个条目,即x = y。
可以通过创建一个30x2的随机数矩阵来添加噪声,为此使用rand
,然后将其添加到先前创建的矩阵中。
查看svd
上的文档,看看奇异值分解是如何工作的,如果你知道线性代数,那就相当简单。
最后,对于绘图,您可以使用各种工具,例如image
,imagesc
,plot
,surf
和scatter
,尝试使用它们,看哪哪种效果最好对你而言。
答案 1 :(得分:1)
以下是我做的一个简单示例:https://saturnapi.com/fullstack/2d-points-randomly-near-line
%// Welcome to Saturn's MATLAB-Octave API.
%// Delete the sample code below these comments and write your own!'
x = 13 + 6.*rand(20,1);
y = x*0.7 + 0.5*rand(20,1);
[X,Y] = meshgrid(x,y)
figure(1);
plot(x,y,'.');
%// Print plot as PNG with resultion of 60 pixels per inch
print("MyPNG.png", "-dpng", "-r60");