Filter löschen
Filter löschen

Info

Diese Frage ist geschlossen. Öffnen Sie sie erneut, um sie zu bearbeiten oder zu beantworten.

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 Ansicht (letzte 30 Tage)
I'm having a problem of storing a 17x17 matrix in to a 3D array 17x17xNo.Matrices. 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 check the size() of the temp variable they are all 17x17 but when I add the part of the code that will store the matrix temp to the array it says that temp only contains 16x17.
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
size(temp)
array(:,:,ctr)=temp;
end

Antworten (0)

Diese Frage ist geschlossen.

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by