# In an assignment A(I) = B, the number of elements in B and I must be the same.

2 views (last 30 days)
Ben Booth on 18 Feb 2015
Commented: Ben Booth on 18 Feb 2015
Hi all,
I am using Matlab for a university tutorial, and have been assigned the task of:
"Plot the response of G1(s) to the first cycle of a sine wave
G1(s) = (3s+2) / (2s^3+4s^2+5s+1)
u(t) = | 0 for t<0 | 2*sin(10*pi*t) for 0<t>8 | 0 for t>=8"
In order to solve the problem, I have written the following code:
num=[3 2];
den=[2 4 5 1];
time=[0:0.02:10]';
u=zeros(length(time),1);
x=2*sin(10*pi*time);
for i=min(find(time>=0 & time<8):length(time))
u(i)=x;
end
sys=tf(num,den);
y=lsim(sys,u,time);
plot(time,y,'r',time,u,'m')
However, I am receiving the error "In an assignment A(I) = B, the number of elements in B and I must be the same."
I understand that this issue is arising because I am trying to input a vector (x) into a scalar (i), however, I am unsure how I can overcome this issue, as my value for x is constantly changing. Could anyone advise me on a function which can be used, or any modification I could use to resolve the issue.

Erik S. on 18 Feb 2015
I attach a file, is it the result you need?
Ben Booth on 18 Feb 2015
Hi Erik,
This looks very similar to the result which I require.
Thank you very much for all your help.

Erik S. on 18 Feb 2015
Hi Your x in the loop is a vector write
y(i)=x(i)
Ben Booth on 18 Feb 2015
Hi Erik,
After making the modification you suggested the error is removed, however, I am not getting the desired plot. As shown below, the output remains at a constant 0, and does not alter with time. Is there anything else which you can suggest?

Erik S. on 18 Feb 2015
Hi
Your loop condition is not correct I think. It will only run 1 time. At which iteration should it start and finish?

### Categories

Find more on Oceanography and Hydrology in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!