# why the size function for matrix count less?

3 views (last 30 days)
Shiyun Li on 24 Apr 2020
Edited: Deepak Gupta on 24 Apr 2020
Hi
I want to use the size function to check the output array, I expect 12x2 matrix but it shown "rows=8" which is less. Which lead to the next step when I want to use the rows is display an error said Index in position 1 exceeds array bounds (must not exceed 8).
Here is my code. Please let me know if you knwo what 's wrong with it. Thank you.
%print every set of number that sum to target value t
clear;clc;
%input an matrix
a=input('Enter a matrix:');
%check the size of the matrix
n=length(a);
%create an matrix
matrix=[];
%loop through
for r=1:n
for i=1:n
if a(r)+a(i)==12
matrix(r,1)=a(r);
matrix(r,2)=a(i);
end
end
end
%check the size of the matrix
[rows,colns]=size(matrix);
disp(rows);
disp(colns);
for k=1:rows
if matrix (k,1)>=matrix(k,2)
matrix(k,:)=[];
end
end
disp(matrix);
%% when I discard the "check matrix and delect rows part" is display a 12* 2 matrix like this

#### 1 Comment

Shiyun Li on 24 Apr 2020
Enter a matrix:[1 3 5 4 6 2 9 12 7 11 8 0]
1 11
3 9
5 7
4 8
6 6
0 0
9 3
12 0
7 5
11 1
8 4
0 12
and when I code to remove the rows with the first number greater than or equal to the second number, it display the error

Deepak Gupta on 24 Apr 2020
Edited: Deepak Gupta on 24 Apr 2020
Hi,
You are getting error, because inside loop, you are deleting rows from the matrix so it's not of the same size as you computed earlier. Better would be to put results in a different matrix.
i.e.
matrix2 = [];
for k=1:rows
if matrix (k,1)<matrix(k,2)
matrix2= [matrix2; matrix(k,:)];
end
end