"index exceeds matrix dimensions" error.
조회 수: 1 (최근 30일)
이전 댓글 표시
I keep getting the "index exceeds matrix dimensions" error when I get to problem 3 with my code. If i were to run the code separately and using clc and clear, it works fine. I also have to use clc and clear every time i want to run my code. Is there any way I can run it without doing so? Thank you! This is my code:
%Problem 1
disp('Answers to Problem 1: ')
fprintf('\n')
N = input('Please enter an integer: ');
while (N < 0 ||(N~=fix(N)));
disp('You have entered an invalid integer. Please try again. ')
N = input('Please enter an integer: ');
end
a = sum(1:N);
fprintf('The sum of integers from 1 to %.0f is: %.2f\n ',N,a)
sum = 0;
for a = 1:N;
sum = sum+a;
end
fprintf('The sum of integers 1 to %.0f is: %.2f\n ',N,sum);
%Problem 2
fprintf('\n')
disp('Answers to Problem 2: ')
fprintf('\n')
K = input('Please enter an integer: ');
product = 1;
while (K < 0 ||(K~=fix(K)))
disp('You have entered an invalid number. Please try again. ')
K = input('Please enter an integer: ');
end
y = prod(1:K);
fprintf('The product of integers 1 to %.0f is: %.1f\n ',K,y)
for y = [1:K];
product = product*y;
end
fprintf('The product of integers 1 to %.0f is: %.1f\n',K,product)
%Problem 3
fprintf('\n')
disp('Answers to Problem 3: ')
fprintf('\n')
Vector = input('Enter a vector while using [] around the numbers: ');
b = sum(Vector);
fprintf('The sum of the elements in the vector = %.3f\n ',b)
sumvec = 0;
w = length(Vector);
for e = 1:w
sumvec = sumvec + Vector(e);
end
fprintf('The sum of the elements in the vector = %.3f\n ',sumvec)
%Problem 4
fprintf('\n')
disp('Answers to Problems 4: ')
fprintf('\n')
P = input('Please enter a value for the first number: ');
Q = input('Please enter a value for the second number: ');
if (P < 0||(P~=fix(P)||(Q~=fix(Q)||(P > Q))))
disp('Please enter valid integers.')
fprintf('\n')
disp('I.E. Whole numbers & first number must be less than the second number.')
P = input('Please enter a value for the first number: ');
Q = input('Please enter a value for the second number: ');
else
t = prod(P:Q);
fprintf('The product of %d to %d is: %d\n ',P,Q,t)
product = 1;
for u = [P:Q];
product = product*u;
end
fprintf('The product of %d to %d is: %d\n ',P,Q,product)
end
%Problem 5
fprintf('\n')
disp('Answer to Problem 5: ')
fprintf('\n')
for k = 1:4
for t = 4:-1:k
fprintf('*')
end
fprintf('\n')
end
for k = 4:-1:1
for t = 4:-1:k
fprintf('^')
end
fprintf('\n')
end
댓글 수: 0
채택된 답변
Walter Roberson
2011년 3월 8일
In problem 1, you defined "sum" as a variable. Then in problem 3, you attempt to use "sum" as a function.
댓글 수: 0
추가 답변 (4개)
Sean de Wolski
2011년 3월 8일
It probably means that whatever variable you're using to index is already defined elsewhere and not redefined in your code. Type
dbstop if error
and inspect the variables when it errors out. You don't need clc and you should be able to use
clearvars
instead of clear; just insert it at the top of the script.
댓글 수: 0
maged al-dhaeebi
2013년 4월 22일
편집: Walter Roberson
2013년 4월 22일
Index exceeds matrix dimensions.
I have the same probelm in my code hwo to solve this
my code it :
FolderNames={'Data0', 'Data45','Data90','Data135','Data180','Data225','Data270','Data315'}
FolderIndx=1
SaveFileName=strcat('ProcessData',num2str(FolderIndx));
SaveImageFileName=strcat('ImageData',num2str(FolderIndx));
AngleAr=45*[4,5,6,7,0,1,2,3]';
FoldName=FolderNames{FolderIndx}
list=ls(FoldName)
for FrqIndx=1 : 3
FileName=strcat(FoldName,'\', list(FrqIndx+2,:));
StrData=load(FileName);
[XData,YData,ZData,ImageData]=ProcessRawData(StrData,AngleAr,FolderIndx)
SpotsDataX{FrqIndx}=XData;
SpotsDataY{FrqIndx}=YData;
SpotsDataZ{FrqIndx}=ZData;
Images{FrqIndx}=ImageData;
size(Images)
end
save (SaveFileName,'SpotsDataX','SpotsDataY','SpotsDataZ');
save (SaveImageFileName,'Images');
댓글 수: 1
Walter Roberson
2013년 4월 22일
Which line does the problem occur on?
Your code assumes that each of those folders already contains at least 5 directory entries including "." and ".." (which are not promised to be the first two entries, by the way.) If one of the folders contains fewer entries then you would get index out of range accessing list(FrqIndx+2,:)
Manjiree Waikar
2017년 3월 7일
편집: Walter Roberson
2017년 3월 7일
I have this error in my code as
Index exceeds matrix dimensions. Error in clusteredit (line 21) green = imIDX(:,:,2); % Green channel
Please help me how to tackle this error.
My code is-
clear all;
newImageRGB = imread('p2_left_norm_1.bmp');
figure;
imshow(newImageRGB);
title('Original image');
grayImage = rgb2gray(newImageRGB);
figure;
imshow(grayImage);
title('grayscale image');
afterWiener = wiener2(grayImage,[6 6]);
figure;
imshow(afterWiener);
title('Wiener filter');
imData=reshape(afterWiener,[],1);
imData=im2double(imData);
[IDX mn]=kmeans(imData,3);
imIDX=reshape(IDX,size(afterWiener));
red = imIDX(:,:,1); % Red channel
green = imIDX(:,:,2); % Green channel
blue = imIDX(:,:,3); % Blue channel
a = zeros(size(imIDX, 1), size(imIDX, 2));
just_red = cat(3, red, a, a);
just_green = cat(3, a, green, a);
just_blue = cat(3, a, a, blue);
back_to_original_img = cat(3, red, green, blue);
figure,
imshow(just_red),
title('Red channel')
figure,
imshow(just_green),
title('Green channel')
figure,
imshow(just_blue),
title('Blue channel')
댓글 수: 1
Walter Roberson
2017년 3월 7일
Looking in reverse order, you have
green = imIDX(:,:,2); % Green channel
after
imIDX=reshape(IDX,size(afterWiener));
after
afterWiener = wiener2(grayImage,[6 6]);
after
grayImage = rgb2gray(newImageRGB);
So you are taking an RGB image, transforming it to gray, doing a wiener2 transform on it, getting a 2D result. The size of the 2D result is used to reshape the matrix IDX, so the result of the reshape is going to be 2D. You then try to index the third dimension of that 2D matrix.
Possibly at some point after reshaping IDX, you wanted to use those indices to index into the original color image, such as
R = newImageRGB(:,:,1);
G = newImageRGB(:,:,2);
B = newImageRGB(:,:,3);
red = R(IDX);
green = G(IDX);
blue = B(IDX);
참고 항목
카테고리
Help Center 및 File Exchange에서 Signal Processing Toolbox에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!