Write a function called large_elements that takes as input an array named X that is a matrix or a vector. The function identifies those elements of X that are greater than the sum of their two indexes. For example, if the element X(2,3) is 6, then that element would be identified because 6 is greater than 2 + 3. The output of the function gives the indexes of such elements found in row-­‐ major order. It is a matrix with exactly two columns. The first column contains the row indexes, while the second column contains the corresponding column indexes. For example, the statement indexes = large_elements([1 4; 5 2; 6 0], will make indexes equal to [1 2; 2 1; 3 1]. If no such element exists, the function returns an empty array.
function found = large_elements(A)
[row col] = size(A);
found = [];
for ii = 1:row
for jj = 1:col
if A(ii,jj) > ii + jj
found = [found; ii jj];
else found = [];
end
end
end
end
Problem 4 (large_elements): Feedback: Your function performed correctly for argument(s) 1
Feedback: Your function performed correctly for argument(s) [1 2 3 4 5 6 7 8 9 10]
Feedback: Your function made an error for argument(s) [10 9 8 7 6 5 4 3 2 1]
Your solution is _not_ correct.

4 comentarios

Jyoti Sharma
Jyoti Sharma el 5 de Jul. de 2017
Editada: Jyoti Sharma el 5 de Jul. de 2017
My code worked. I think you should remove the else statement. Try this:
function y = small_elements(v)
[r,c] = size(v);
n=0;
y = [];
for j = 1:c
for i = 1:r
if v(i,j) < i*j;
n = n+1;
y = [y; i j];
end
end
end
Walter Roberson
Walter Roberson el 5 de Jul. de 2017
Jyoti, that is what I suggested two years ago.
grooshka
grooshka el 16 de Abr. de 2018
What is the purpose of n variable?

Iniciar sesión para comentar.

 Respuesta aceptada

Walter Roberson
Walter Roberson el 30 de Mayo de 2015

0 votos

In the "else" case, leave found unchanged instead of overwriting all of it with [].

2 comentarios

Edward Kofi Mahama
Edward Kofi Mahama el 11 de Nov. de 2017
Please why did you add " n=0" and "n = n+1" to the code. I don't understand why the code should not work without that. Can you please help explain? Thanks in advance
Walter Roberson
Walter Roberson el 11 de Nov. de 2017
Jyoti Sharma added the counter. I do not know why.
There is another way of writing the code that does use a counter:
function y = small_elements(v)
[r,c] = size(v);
n=0;
y = [];
for j = 1:c
for i = 1:r
if v(i,j) < i*j;
n = n+1;
y(n,:) = [i j];
end
end
end

Iniciar sesión para comentar.

Más respuestas (1)

Jorge Alberto Fuentes Casillas
Jorge Alberto Fuentes Casillas el 18 de Abr. de 2017
Editada: Walter Roberson el 18 de Abr. de 2017

0 votos

This code is for this case: "Write a function called small_elements that takes as input an array named X that is a matrix or a vector...."
function indexes = small_elements(v)
[i j] = size(v);
position = 0;
indexes_rows = [];
indexes_columns = [];
if ~isempty(v)
for columns = 1:j
for rows = 1:i
elem_in_i = v(rows,columns);
product_ij = rows*columns;
if elem_in_i<product_ij
position = position+1;
indexes_rows(position) = (rows);
indexes_columns(position) = (columns);
end
end
end
if isempty(indexes_rows) || isempty(indexes_columns)
indexes = [];
else
indexes = [indexes_rows',indexes_columns']; % A matrix of only 2 columns is created.
end
else
indexes = [];
end
end

Categorías

Etiquetas

Aún no se han introducido etiquetas.

Preguntada:

el 30 de Mayo de 2015

Comentada:

el 16 de Abr. de 2018

Community Treasure Hunt

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

Start Hunting!

Translated by