help with my home work plzzzz

4. Generate the matrix X= [-10:10; 1:2:42;-10:3:52], then do the following
  • Multiply the elements that have a value less than or equal zero by 4.
  • Generate a new Matrix Y that have value 1000 if the value of X is less than or equal zero and zero otherwise.
  • Calculate number of 1000 in new matrix
%this is for a
clc
clear all
x=[-10:10;1:2:42;-10:3:52];
[r c]=size(x);
for i=1;r;
for j=1:c;
if x(i,j)<0
x(i,j)=4.*x(i,j);
else
x(i,j)=x(i,j);
end
end
end
x
-40 -36 -32 -28 -24 -20 -16 -12 -8 -4 0 1 2 3 4 5 6 7 8 9 10
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41
-10 -7 -4 -1 2 5 8 11 14 17 20 23 26 29 32 35 38 41 44 47 50
what i am doing wron why the third row do not get Multiply by 4

Respuestas (1)

Geoff Hayes
Geoff Hayes el 13 de Mayo de 2020
Editada: Geoff Hayes el 13 de Mayo de 2020

0 votos

Bader - look closely at the line
for i=1;r;
You have a semi-colon between the 1 and the r. Replace with a colon and it will work as expected:
for i=1:r
By the way, you can remove the else body as it doesn't add any value (since it is changing the value at the given indices).

8 comentarios

Bader Herzallah
Bader Herzallah el 13 de Mayo de 2020
Editada: Bader Herzallah el 13 de Mayo de 2020
ok thx for that can u explain what he want in b and c
Geoff Hayes
Geoff Hayes el 13 de Mayo de 2020
Generate a new Matrix Y that have value 1000 if the value of X is less than or equal zero and zero otherwise.
So you need to create a new matrix named Y that has the same dimensions as X. If an element of X is less than or equal to zero, then the corresponding element of Y is set to1000. All other elements are 0.
Calculate number of 1000 in new matrix
Count the number of times that 1000 appears in Y.
Bader Herzallah
Bader Herzallah el 13 de Mayo de 2020
ok how i creat y withthe same size of x but all the elments 1000
Steven Lord
Steven Lord el 13 de Mayo de 2020
As a hint, some of the functions in the Create and Combine Arrays section on this documentation page will be of use to you. Also remember 1000 = 1000 + 0 and 1000 = 1000 * 1.
clc
clear all
x=[-10:10; 1:2:42;-10:3:52]
n=0;
[r c]=size(x)
for i=1:r
for j=1:c
y(i,j)=x(i,j);
if x(i,j)<=0
y(i,j)=1000;
n=n+1;
else
y(i,j)=0;
end
end
end
y
n
Bader Herzallah
Bader Herzallah el 13 de Mayo de 2020
IS THAT right
Geoff Hayes
Geoff Hayes el 13 de Mayo de 2020
Bader - the code looks reasonable though you may want to consider pre-sizing the y array. When you run the code, do you get the expected output?
Steven Lord
Steven Lord el 13 de Mayo de 2020
This works for the x you've been given, but it won't work for all x arrays. Consider this 3-dimensional x array:
x = randn(2, 3, 4);
The y you create will be 2-by-12. See the description of the sz1,sz2, ... szn output arguments on the documentation page for the size function for an explanation.
You could simplify this code in at least two different ways. If your assignment requires you to use a for loop, preallocate y to be an array the same size as x. There's an example on the documentation page for the ones function that shows how to do this. Then loop over the elements in the array (there's a function on this page that will help you count the number of elements) and use linear indexing to address each in turn.
Alternately you can skip for loops entirely by preallocating y exactly as in the previous approach then using logical indexing to change the appropriate elements.

Iniciar sesión para comentar.

Categorías

Más información sobre Matrices and Arrays en Centro de ayuda y File Exchange.

Etiquetas

Preguntada:

el 13 de Mayo de 2020

Comentada:

el 13 de Mayo de 2020

Community Treasure Hunt

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

Start Hunting!

Translated by