【发布时间】:2015-10-04 14:44:37
【问题描述】:
我是 MATLAB 新手,对于以下问题,我有以下公式。如果我想设置从 64 到 256 的灰度,我只需修改一个矩阵以创建一个 M[256,3] 其中:
-
M[Xi,1]=M[Xi,2]=M[xi,3] -
M[Xi,Yi] < M[Xi+1,Yi] -
M[1,Yi]=0 M[256,Yi]=1.
所以我需要创建一个包含我不知道的步骤的矩阵;最后一个元素是1,第一个元素是0,我得到了适用于任何列的以下公式:
C[i]= X0 - (Xn*i -Xn)/N
其中X0=0、Xn=1 和N=256。
使用这样的循环:
k=(1:256);
for i=1:256,
k(i)=(i-1)/255;
然后将值设置为调色板
palette=zeros(256,3);
for ii=1:3,
palette(:,ii)=k;
end
还有其他选择吗?对我认为 MATLAB 必须具备的东西使用这么多循环真的很烦人:根据第一个元素、最后一个元素和向量的大小将值设置为数组。
【问题讨论】:
-
你的意思是
linspace,如linspace(X0,Xn,N)?那么答案是repmat(linspace(X0,Xn,N)',[1 3])。 -
@AndrasDeak Ops,没有看到您使用
repmat编辑的评论!添加作为答案?这一定是最直观的解决方案。 -
@AndrasDeak 这是最简单的解决方案,谢谢,你能给我解释一下吗?
-
@Divakar,谢谢,我刚刚做了(为了完整性)。路易斯:请看下面我的回答。
标签: matlab image-processing matrix vectorization