2

我想生成一个随机颜色块的矩阵——10 x 10 像素的随机颜色块——例如:

http://i.stack.imgur.com/Jlc8L.png

到目前为止,我已经生成了随机数并使用以下方法放大了矩阵kron

http://i.stack.imgur.com/eBU0T.png

使用:

I = kron(randn([10 10]), ones(10));
imshow(I);

我想为此添加随机颜色,但是:

I = kron(randn([10 10 3]), ones(10));

报告:

error: invalid conversion of NDArray to Matrix

如何生成随机色块矩阵?

这适用于 Psychtoolbox-3(DrawTexture似乎无法在没有插值的情况下将 10x10 随机颜色矩阵放大到 100x100)。

4

3 回答 3

2

您不妨直接生成矩阵:

    R = rand(10,10,3);
    figure;imshow(R);

为了创建块矩阵,请使用imresize

    Rb = imresize(R,10,'nearest');
于 2012-06-15T07:52:40.920 回答
0

这是我通常做类似事情的方式,以防它有帮助:

R = rand(10,10);
subplot(1,1,1)
imshow(mat2gray(R(:,:,1)));
colormap jet

颜色图可以更改为 Matlab 的任何预设或您自己的预设,以反映矩阵中的值。

于 2012-06-15T05:02:44.130 回答
0

正确的解决方案是切换特定纹理的插值算法。

在幕后 Psychtoolbox 使用 OpenGL,它允许您在MakeTexture和之间摆弄原始的 OpenGL 命令DrawTexture

大致,凭记忆。填写“空白”

Screen('MakeTexture')
Screen('GetOpenGLTexture')
glTexParameterfv(target,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
Screen('DrawTexture')
于 2012-07-01T11:33:07.743 回答