Info

此问题已关闭。 请重新打开它进行编辑或回答。

Subscripted assignment dimension mismatch.???

1 次查看(过去 30 天)
dee koshy
dee koshy 2012-2-20
关闭: MATLAB Answer Bot 2021-8-20
function [J] = gabor_fn2(I)
clc;
I=imread('e:\fingerprint3.jpg');
imshow(I);
I2 = imcrop(I);
figure, imshow(I2)
m=size(I2,1);
n=size(I2,2);
%%Gabor
phi = 7*pi/8;
theta = 2;
sigma = 0.65*theta;
for i=1:3
for j=1:3
xprime= j*cos(phi);
yprime= i*sin(phi);
K = exp(2*pi*theta*sqrt(-1)*(xprime+ yprime));
G= exp(-(i.^2+j.^2)/(sigma^2)).*abs(K);
end
end
%%Convolve
for i=1:m
for j=1:n
J(i,j)=conv2(I2,G);
end
end
figure,imshow(unit8(J))
Error in ==> gabor_fn2 at 26
J(i,j)=conv2(I2,G);

回答(1 个)

Wayne King
Wayne King 2012-2-20
The problem is that the output of conv2(I2,G) should be the same size as I2 the way that you have written the code.
In your code above, G, is a scalar, so you have constructed a for loop:
for ii=1:m
for jj =1:n
J(ii,jj)=conv2(I2,G);
end
end
that is convolving a matrix with a scalar.
For example:
G = 2;
x = randn(10,10);
size(conv2(x,G))
You cannot then assign this result to J(ii,jj). For example:
J(1,1) = conv2(x,G);
throws the error you are getting for the reasons I explained.

此问题已关闭。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by