Matlab 版 (精华区)
发信人: zjliu (秋天的萝卜), 信区: Matlab
标 题: [合集]请教:
发信站: 哈工大紫丁香 (2003年11月29日11:20:34 星期六), 站内信件
────────────────────────────────────────
cbt (cbt) 于 Fri Nov 21 08:18:46 2003 说道:
我想生成这样一个向量(3*16581375),
即共有16581375个元素,
每个元素的三个值代表RGB值(取值范围为1-255),
16581375是255的三次方,
这样一个向量代表所有可能的颜色
请问一下怎样生成,
我可不想用三层循环.
谢谢!
────────────────────────────────────────
zjliu (秋天的萝卜) 于 2003年11月21日08:32:51 星期五 说道:
我不知道你的顺序如何,下面是我的建议:
repmat :复制数组,repmat(A,m,n)表示把A复制m行n列组成新数组
randperm :随机置换
或者
A=1:16581375;
B=mod(A,255);
────────────────────────────────────────
cbt (cbt) 于 Fri Nov 21 08:46:02 2003 说道:
我是要生成RGB空间里的所有颜色
你的第一个建议有点像,但不会重复吗?
我要求的这个向量每一行分别为R值、G值、B值(R、G、B的取值都为1-255)
次序倒不要求,就是要求每种颜色都有
你的第2个建议我没看懂。
先谢了
────────────────────────────────────────
zjliu (秋天的萝卜) 于 2003年11月21日08:50:20 星期五 说道:
用mod函数可以保证所有的数都在[0 254]之间,之后再加1就可以了
────────────────────────────────────────
cbt (cbt) 于 Fri Nov 21 09:47:31 2003 说道:
用循环实现则如下所示
a = zeros(3,255 * 255 * 255);
for i = 1 : 255
for j = 1 : 255
for k = 1 : 255
a(1,(i - 1) * 255 * 255 + (j - 1) * 255 + k) = i;
a(2,(i - 1) * 255 * 255 + (j - 1) * 255 + k) = j;
a(3,(i - 1) * 255 * 255 + (j - 1) * 255 + k) = k;
end
end
end
有不有更好的办法?
────────────────────────────────────────
zjliu (秋天的萝卜) 于 2003年11月21日09:47:36 星期五 说道:
模仿255进制数可这样写:
N=255;
A=0:N^3-1;
B1=mod(A,N);
B2=mod((A-B1)/N,N);
B3=fix(A/N^2);
B1=B1+1;
B2=B2+1;
B3=B3+1;
RGB=[B1;B2;B3]
────────────────────────────────────────
zjliu (秋天的萝卜) 于 2003年11月21日09:48:00 星期五 说道:
看看我写的上文
────────────────────────────────────────
cbt (cbt) 于 Fri Nov 21 09:57:02 2003 说道:
谢谢!
────────────────────────────────────────
cbt (cbt) 于 Fri Nov 21 10:28:52 2003 说道:
N = 255;
a = [1 : N];
a = a(ones(1,N * N),:);
b = reshape(a,N,N * N);
a1 = reshape(a',1,N ^ 3);
a2 = reshape(b',1,N ^ 3);
a3 = reshape(a,1,N ^ 3);
RGB = [a1;a2;a3];
根据zjliu的提示再次改写,是不是能更快一些?
────────────────────────────────────────
zjliu (秋天的萝卜) 于 2003年11月21日11:58:12 星期五 说道:
你试了么?运行速度如何?
────────────────────────────────────────
cbt (cbt) 于 Fri Nov 21 14:25:29 2003 说道:
速度还行!
────────────────────────────────────────
zjliu (秋天的萝卜) 于 2003年11月21日15:48:47 星期五 说道:
看来是我的机器性能不行,我这运行不了
────────────────────────────────────────
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.778毫秒