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