# sir im doing a simple program to identify pixel value and compare with another image,

1 view (last 30 days)
vani shree on 8 Apr 2017
Answered: vani shree on 12 Apr 2017
when i run this code i am getting this error.
"Index exceeds matrix dimensions.
Error in myfu1n (line 10)
subblock = I(r:r+7, c:c+7);"
my complete code
clc;
clear all;
close all;
original = double(original);
for( j = 0 : 1:7)
r = randi(225-7);
c = randi(225-7);
subblock = I(r:r+7, c:c+7);
imshow(subblock);
figure;
t = [1 1];
[s fval] = fminunc(@myfun , subblock)
end
y=myfun(I)
separate function
%%myfun(I)
function f = myfun(x)
scale = 0.7;
J = imresize(x, scale);
theta = 30;
x0 = imrotate(J,theta);
for( i = 1:1:225)
f = (x^2 - x0(i)^2);
end

Geoff Hayes on 8 Apr 2017
Edited: Geoff Hayes on 8 Apr 2017
vani - are you sure that your image is 225x225? Rather than hardcoding the dimensions, use size to determine the number of rows and columns
numRows = size(I,1);
numCols = size(I,2);
for( j = 0 : 1:7)
r = randi(numRows - 7)
c = randi(numCols - 7);
subblock = I(r:r+7, c:c+7, 1);
% etc.
end
The 1 in subblock may not be necessary as presumably I is two dimensional (due to the conversion from RGB to grayscale).

vani shree on 12 Apr 2017
thank you sir.. its working properly im getting values. but still it is showing error in function part. Error using ^ MPOWER is not fully supported for integer classes. Both inputs must be scalar. To compute elementwise POWER, use POWER (.^) instead.
Error in myfun (line 7) f = (x^2 - x0(i) ^2);
Error in myfu1n (line 14) f = myfun(I)
code %%myfun(I) function f = myfun(x) scale = 0.7; J = imresize(x, scale); theta = 30; x0 = imrotate(J,theta); for( i = 1:1:225) f = (x^2 - x0(i)^2); end