plotting a simple constant
    125 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Robert
      
 el 17 de Sept. de 2016
  
    
    
    
    
    Respondida: Sam Chak
      
      
 el 2 de Mzo. de 2024
            Matlab strikes again with stupidity
Been using matlab for years and still fighting ridiculous problems
x = [1:.5:10]
y = x.*4;
Z = 4
plot(x,y,'blue'); hold on
plot (x,Z,'red')
Why won't this give me a simple plot with both functions on it. Totally insane. It gives me the x*4 plot but will not give me the constant 4
0 comentarios
Respuesta aceptada
  Anatoly Kozlov
 el 6 de Abr. de 2020
        
      Editada: Anatoly Kozlov
 el 6 de Abr. de 2020
  
      x = 0:0.001:1;
c=5;
const = @(x)(c).*x.^(0);
 plot(x, const(x))
1 comentario
  Anatoly Kozlov
 el 6 de Abr. de 2020
				
      Editada: Anatoly Kozlov
 el 6 de Abr. de 2020
  
			Note: const = @(x)(c);  doesn't work
Más respuestas (3)
  Image Analyst
      
      
 el 17 de Sept. de 2016
        Sometime in your years of using MATLAB you probably ran across ones() function but forgot about it. You need to use it so that, for each value of x, you have a value for Z. Here is the correct way to do it.
x = [1 : 0.5 : 10]
y = x .* 4 
% Now declare a constant array Z
% with one element for each element of x.
Z = 4 * ones(1, length(x));
plot(x, y, 'b', 'LineWidth', 2); 
hold on
plot(x, Z, 'r', 'LineWidth', 2)
grid on;
Otherwise, your Z had only 1 element, not 1 for every value of x so it won't plot a point at every value of x.
5 comentarios
  Paul
      
      
 el 2 de Mzo. de 2024
				x = [1:.5:10];
y = x.*4;
Z = 4;
plot(x,y,'blue'); hold on
%plot (x,Z,'red')
yline(Z,'red')
  sunny
 el 2 de Mzo. de 2024
        x =1:.5:10;
y = x.*4;
Z = 4;
m=5:.5:14;
n=m-x;
plot(x,y,'blue'); 
hold on
plot (x,n,'red');
hold off;
0 comentarios
  Sam Chak
      
      
 el 2 de Mzo. de 2024
        Hi @Robert
Before I discovered other special non-math functions like ones() and yline(), I used to rely on certain math tricks, such as the sign function, to plot a constant y-value over a specified x range. The concept was to treat plotting 
 as if it were any other vector in a finite-dimensional Euclidean space. However, this trick had a fatal flaw when attempting to plot the constant y-value over 
, as 
. Therefore, it was necessary to adjust or shift the 'goalpost' to overcome this limitation.

Example 1: Using the sign function
x   = 1:0.5:10;
y1  = 4*x;
y2  = 4*sign(x.^2);
figure(1)
plot(x, y1, 'linewidth', 2), hold on
plot(x, y2, 'linewidth', 2), grid on
xlim([x(1), x(end)])
xlabel x, ylabel y
title('Example 1: Using the sign function')
legend('y_{1}', 'y_{2}', 'fontsize', 16, 'location', 'best')
Example 2: Fatal flaw when crossing 
x   = -2:0.5:2;
y1  = 4*x;
y2  = 4*sign((x - 0).^2);
figure(2)
plot(x, y1, 'linewidth', 2), hold on
plot(x, y2, 'linewidth', 2), grid on
xlim([x(1), x(end)])
xlabel x, ylabel y
title('Example 2: Fatal flaw when crossing x = 0')
legend('y_{1}', 'y_{2}', 'fontsize', 16, 'location', 'best')
Example 3: Shifting the goalpost
x   = -2:0.5:2;
y1  = 4*x;
y2  = 4*sign((x - 2*x(1)).^2);
figure(3)
plot(x, y1, 'linewidth', 2), hold on
plot(x, y2, 'linewidth', 2), grid on
xlim([x(1), x(end)])
xlabel x, ylabel y
title('Example 3: Shifting the goalpost')
legend('y_{1}', 'y_{2}', 'fontsize', 16, 'location', 'best')
0 comentarios
Ver también
Categorías
				Más información sobre Numerical Integration and Differentiation en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




