why the size function for matrix count less?

1 次查看(过去 30 天)
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 个评论
Shiyun Li
Shiyun Li 2020-4-24
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
Deepak Gupta 2020-4-24
编辑:Deepak Gupta 2020-4-24
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

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by