警告:IMSHOW(I,N) 是一种过时的语法。您的灰度图像将使用 256 级灰色显示

Warning: IMSHOW(I,N) is an obsolete syntax. Your grayscale image will be displayed using 256 shades of gray

我明白了 warning:Warning:IMSHOW(I,N) 是一种过时的语法。您的灰度图像将使用 256 级灰色显示..请帮助我。我已经实现了 2d dct.why 它不适用于 m=64;

m=input('enter the basis matrix dimension:');
n=m;
alpha2=ones(1,n)*sqrt(2/n);
alpha2(1)=sqrt(1/n);
alpha1=ones(1,m)*sqrt(2/m);
alpha1(1)=sqrt(1/m);
for u=0:m-1
    for v=0:n-1
        for x=0:m-1
            for y=0:n-1
                a(u+1,v+1,x+1,y+1)=alpha1(u+1)*alpha2(v+1)*cos((2*x+1)*u*pi/(2*n))*cos((2*y+1)*v*pi/(2*n));
            end
        end
    end
end
mag=a;
figure;
k=1;
%code to plot basis
for i=1;m
    for j=1:n
        subplot(m,n,k)
        imshow(mag(i,j),256);
        k=k+1;
    end
end

你不能那样做子索引,试试:

a(u+1,v+1, x+1,y+1)=alpha1(u+1)*alpha2(v+1)*cos((2*x+1)*u*pi/(2*n))*cos((2*y+1)*v*pi/(2*n))

编辑:

您遇到了 3 个问题。您仍在尝试将数据提取出来,就好像它是子矩阵一样,然后修复尺寸不正确以及您评论的错误。

这是为了解决所有问题。

imshow(squeeze(mag(i,j,:,:)),[0, 255]);