在y = x附近创建2D点

时间:2015-10-02 13:31:22

标签: matlab matrix svd

我需要在y = x线附近生成一些随机2D点(例如30个点),将它们插入矩阵,绘制它然后计算矩阵的SVD。但由于我是MATLAB的新手,我不知道如何生成我想要的矩阵。

2 个答案:

答案 0 :(得分:3)

由于这看起来像家庭作业,我只是在这里发布一些一般性的想法。

randi可用于获取半随机整数。使用它可以通过复制数组并将它们放在一起来创建2D矩阵。因此:生成30x1列并将其复制到30x2列。所有行都将具有相同的两个条目,即x = y。

可以通过创建一个30x2的随机数矩阵来添加噪声,为此使用rand,然后将其添加到先前创建的矩阵中。

查看svd上的文档,看看奇异值分解是如何工作的,如果你知道线性代数,那就相当简单。

最后,对于绘图,您可以使用各种工具,例如imageimagescplotsurfscatter,尝试使用它们,看哪哪种效果最好对你而言。

答案 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");