Concatinating signals on Matlab

by princess Maro
Tags: concatinating, matlab, signals
 P: 2 Hiiiiii Everyone , It is My First Post ....And I will be Very pleased if You helped me find a solution to my problem . well... It is a Matlab code & I have different type of signals (impulse ,Ramp, sinusoidal,Dc ,exponintial ) & the type of signal is determined by the user ( the user enter a number from 1 to 5) to determine the signal & the user can have multiple selection ..& the user tells me how many time he want to select signals But The Problem i don't Know how to concatenate the signal .. I tried to make it like this A=[]; for i=1:c+1 A=[A y(choice)] end but an error keeps bothering me ??? In an assignment A(I) = B, the number of elements in B and I must be the same. please any one help me..
 Homework Sci Advisor HW Helper Thanks P: 12,873 So if you are storing the possible signals in vectors m1 m2 etc, and the user constructed vector is a, then, at each selection, you are doing a=[a,m1] (if type 1 was selected). I think your error means that you have made a mistake in your assignments to do with the vector size. Check that you are concatenating to the right place with the correct orientation. But I suspect it is the y(choice) part ... matlab would see that as an assignment of form A(I)=B you see? i.e. 7> m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 8> a=m(1,:) a = 16 2 3 13 9> a=[a,m(4,:)] a = 16 2 3 13 4 14 15 1 10> a=[a,m(:,3)] error: number of rows must match (4 != 1) near line 10, column 6 10> a=[a;m(3,:)] error: number of columns must match (4 != 8) To be able to tell what is going wrong for you I need to see the code and the context for the error (the actual error message copy-and-past).
 P: 2 Thanks Monsieur simone For Your Help :) But That wasnot the point that i was asking about .. You R Right you have to see the code to be able to see the problem c=input('enter the number of break point: '); for n=1:c m(1,k)=input('enter positions of break point:'); k=k+1; end p=[-5 m 3]; % The signal start at -5 & end at 3 & m is the position of the break for k = 1:c+1 t=linspace(p(1,k),p(1,k+1),(p(1,k+1)-p(1,k))*100); % the frequency =100 choice=menu('Choose a type','y(1)','y(2)','y(3)','y(4)','y(5)'); if choice==1 g=p(1,k+1)-p(1,k); y(1)=[4 zeros(1,(g-1))]; end if choice==2 y(2)=5*ones(1,t); end if choice==3 y(3)=3*t+1; end if choice==4 y(4)=3*exp(-2); end if choice==5 y(5)=5*sin(100*t+30); end % Here i want to conatenate all the choosen signals & Plot it With T % But i can't Write the proper code of concatination T=linspace(-5,3,(3+5)*100); A=ones(1,(3+5)*100); end
Homework
HW Helper
Thanks
P: 12,873
Concatinating signals on Matlab

 Quote by princess Maro Thanks Monsieur simone[*] For Your Help :) But That wasnot the point that i was asking about .. You R Right you have to see the code to be able to see the problem
I can see a number of problems with the below:
c=input('enter the number of break point: ');

for n=1:c
m(1,k)=input('enter positions of break point:');
k=k+1;
end
... you have not defined k - change the n to a k or the k to an n.

With this change, the output looks like this:
48> sig
enter the number of break point: 3
enter positions of break point:0.1
enter positions of break point:0.2
enter positions of break point:2
Choose a type

[ 1] y(1)
[ 2] y(2)
[ 3] y(3)
[ 4] y(4)
[ 5] y(5)

pick a number, any number: 1
error: A(I) = X: X must have the same size as I
error: called from:
error:   /home/simon/sig.m at line 15, column 5
line 15 is:
if choice==1
g=p(1,k+1)-p(1,k);
y(1)=[4 zeros(1,(g-1))];
end
consider: what does "y(1)" mean to matlab?

- what do you y to look like?
if you want y to be a row vector containing the signal, then you can build it as you go.
something like:

y=[y,[4 zeros(1,(g-1))] ];

That gets rid of the error but there are other problems.

Work through your loops by hand - pick c=1 and choose 0 so that p=[-5,0,3] and see what happens. Make sure it's what you want to happen.
What happens if the user chooses break point positions out of order? i.e. if c=2, and the first point is 2 and the second is -1?
What happens if the user chooses non-integer break point positions?
I'm guessing you'll work out how to build a horizontal axis later?

-------------------------
[*] Shouldn't that be by Monsieur (Simon) Dupont for French? IIRC: "Simone" is the feminine spelling in French as it is in English so you are kinda implying that you think I'm a girl? Mind you - if I'm an honorary woman then I get to be "right" don't I so... no complaints there ;)

It is masculine in Italian though - for "Signor (Simone) Ponte" or something(?)

 Related Discussions Engineering, Comp Sci, & Technology Homework 0 Electrical Engineering 2 Electrical Engineering 1 Engineering, Comp Sci, & Technology Homework 2 Engineering, Comp Sci, & Technology Homework 0