Clear Filters
Clear Filters

Info

This question is closed. Reopen it to edit or answer.

Unable to perform assignment because the size of the left side is 17-by-17 and the size of the right side is 16-by-17.

1 view (last 30 days)
I'm having a problem in storing 17x17 2d array into a 17x17xno.ofmatrix 3d array. its giving me this error
"Unable to perform assignment because the size of the left side is 17-by-17 and the size of the right side is 16-by-17."
but when i remove the code that store the 2d array to the 3d array all 2d array have 17x17 dimension(ichecked using size(temp)). it seems that adding this line of code
array(:,:,ctr)=temp;
caused the temp matrix to error.
here is my code:
clear;clc;
files = dir('C:\Program Files\MATLAB\R2018a\bin\vision\data\');
files(ismember( {files.name}, {'.', '..'})) = [];
dirFlags = [files.isdir];
% Extract only those that are directories.
subFolders = files(dirFlags);
% Print folder names to command window.
trainctr =1;
testctr =1;
trainingLabels = cell(315,1);
testLabels = cell(336,1);
%subfolder loop
for k = 1 : length(subFolders)
%FOR DEBUGGING: Print all subfolders
%fprintf('Sub folder #%d = %s\n', k, subFolders(k).nametest(:,:,1,1));
direc = 'C:\Program Files\MATLAB\R2018a\bin\vision\data\';
newDir = strcat(direc,subFolders(k).name);
subname = subFolders(k).name;
%FOR DEBUGGING: Print new Directory
%fprintf('New Dir: %s\n', newDir);
scanDir = dir(newDir);
scanDir(ismember( {scanDir.name}, {'.', '..'})) = [];
scanFlags = [scanDir.isdir];
scanSubFolders = scanDir(scanFlags);
%note category loop
for i = 1 : length(scanSubFolders)
newDir2 = strcat(newDir,'\');
newDir2 = strcat(newDir2,scanSubFolders(i).name);
newDir3 = newDir2;
newDir2 = strcat(newDir2,'\*.png');
imagefiles = dir(newDir2);
nfiles = length(imagefiles);
fold = scanSubFolders(i).name;
%image loop
for ii=1:nfiles
%fprintf('%s\n',imagefiles(ii).name);
%
photo=imagefiles(ii).name;
filename = fullfile(newDir3,photo);
Image = imread(filename);
%pre processing
A = rgb2gray(Image);
A=imbinarize(A,'adaptive','ForegroundPolarity','dark','sensitivity',0.5);
folder = strcmp('testing',subname);
if folder == 1
test(:,:,testctr) = A;
testLabels(testctr) = {scanSubFolders(i).name};
testctr = testctr+1;
else
train(:,:,trainctr) = A;
trainingLabels(trainctr) = {scanSubFolders(i).name};
trainctr = trainctr+1;
end
end
end
end
%CNN networl
train1=double(train);
padded = ones(36);
for ctr=1:length(train1)
C=train1(:,:,ctr);
tmp=sum(C,2);
ind=find(tmp<10);
C(ind,:)=1;
openedImage = imopen(C, [1;1;1]);
[rows, columns] = size(openedImage);
mask = repmat(tmp<200, 1, columns);
C(mask) = openedImage(mask);
%padding
for i=1:size(C,1)
for j=1:size(C,2)
padded(i+2,j+2)=C(i,j);
end
end
for i=1:size(padded,1)-2
for j=1:size(padded,2)-2
%Sobel mask for x-direction:
Gx=( ( 2*padded(i+2,j+1)+padded(i+2,j)+padded(i+2,j+2) ) - ( 2*padded(i,j+1)+padded(i,j)+padded(i,j+2) ) );
%Sobel mask for y-direction:
Gy=((2*padded(i+1,j+2)+padded(i,j+2)+padded(i+2,j+2))-(2*padded(i+1,j)+padded(i,j)+padded(i+2,j)));
%The gradient of the image
B(i,j)=sqrt(Gx.^2+Gy.^2);
end
end
c=double(B);
q = 0;
x=0;
temp = 0;
for i=1:+2:size(c,1)
for j=1:+2:size(c,2)
var1 = B(i,j);
var2 = B(i,j+1);
var3 = B(i+1,j);
var4 = B(i+1,j+1);
ans = [var1,var2;var3,var4];
if(i == 1)
if(x==0)
q(1) = max(ans(:));
x=x+1;
else
q = [q,max(ans(:))];
end
else
q = [q,max(ans(:))];
end
end
if(i~=1)
q = q(2:end);
end
%length(q)
if(temp == 0)
temp = q;
else
temp = [temp;q];
end
q=0;
%x=x+1;
end
array(:,:,ctr)=temp;
end

Answers (0)

This question is closed.

Tags

Community Treasure Hunt

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

Start Hunting!