why the size function for matrix count less?

1 visualización (últimos 30 días)
Shiyun Li
Shiyun Li el 24 de Abr. de 2020
Editada: Deepak Gupta el 24 de Abr. de 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 comentario
Shiyun Li
Shiyun Li el 24 de Abr. de 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

Iniciar sesión para comentar.

Respuesta aceptada

Deepak Gupta
Deepak Gupta el 24 de Abr. de 2020
Editada: Deepak Gupta el 24 de Abr. de 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

Más respuestas (0)

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by