Plot a rectangular Pulse from -1 to 1

3 次查看(过去 30 天)
What can be the generalized code for this? I need a generalized code where the output asks me to enter the time axis and range and amplitude
t1=-2:0.01:-1; %time axis
t2=-1:0.01:1; %time axis
t3=1:0.01:2; %time axis
t=[t1 t2 t3];
x1=zeros(size(t1)); %plotting
x2=ones(size(t2));
x3=zeros(size(t3));
x=[x1 x2 x3];
plot(t,x);
  4 个评论
Image Analyst
Image Analyst 2020-12-12
input() takes a string, not a bunch of numerical variables with no multiplication sign between them. Again, a string, not numbers.
SHIVAM KUMAR
SHIVAM KUMAR 2020-12-12
Ok. I hoped of some conversion from string to array but realized it doesn't work so changed the code to do it myself.

请先登录,再进行评论。

回答(2 个)

Mohamad
Mohamad 2020-12-12
This just an example , you have to repeat according to your code requirements :
prompt = 'Enter the vector t1 ';
t1 = input(prompt);

SHIVAM KUMAR
SHIVAM KUMAR 2020-12-12
编辑:SHIVAM KUMAR 2020-12-12
% the syntax for taking input t eg:[-2 -1 1 2] =>t1=[-2,-1 ], t2=[-1 1], t3=[1 2].
%I was sleepy earlier so didn't run the code.
%code , don't edit anything as its already running well tested myself.
t=input("Enter the limit for axis : ",'s');
t1=str2num(t); %To get the array for that input string
number=input("enter number of points in interval t1,t2,t3 : "); %enter number of points in interval t1,t2,t3
amplitude=input("Enter the amplitude of square wave : ");
x1=zeros(number); %plotting
x2=amplitude*ones(number);
x3=zeros(number);
x=[x1 x2 x3];
tim=[linspace(t1(1),t1(2),number) linspace(t1(2),t1(3),number) linspace(t1(3),t1(4),number) ]; %The time axis
plot(tim,x);
title("Rectangulat plot");
xlabel("time");
ylabel("Amplitude");

类别

Help CenterFile Exchange 中查找有关 Data Type Conversion 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by