2012-06-15 172 views
2

我想生成随机色块的矩阵 - 的随机颜色10乘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 而不使用插值)。

+0

你居然错过了'filterMode'标志'屏幕的 “空白” 填充( 'DrawTexture')'(参见http://docs.psychtoolbox.org/DrawTexture) – towolf

回答

2

你不如直接生成矩阵:

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

为了创建一个块矩阵,使用imresize

Rb = imresize(R,10,'nearest'); 
0

这是我经常做类似的事情的方式,在情况下,它可以帮助:

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

凡颜色表可以改变任何Matlab的预设,或者你自己的,以反映在矩阵的值。

0

适当的解决方案是切换的内插算法的特定质地。

在幕后Psychtoolbox使用OpenGL,它允许你摆弄MakeTextureDrawTexture之间的原始OpenGL命令。

大致来自记忆。在

Screen('MakeTexture') 
Screen('GetOpenGLTexture') 
glTexParameterfv(target,GL_TEXTURE_MAG_FILTER,GL_NEAREST); 
Screen('DrawTexture')