Register to reply

Concatinating signals on Matlab

by princess Maro
Tags: concatinating, matlab, signals
Share this thread:
princess Maro
#1
Jan31-13, 08:39 PM
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..
Phys.Org News Partner Engineering news on Phys.org
Comfortable climate indoors with porous glass
Crash-testing rivets
Customized surface inspection
Simon Bridge
#2
Jan31-13, 09:38 PM
Homework
Sci Advisor
HW Helper
Thanks
Simon Bridge's Avatar
P: 12,488
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).
princess Maro
#3
Feb1-13, 01:11 PM
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

Simon Bridge
#4
Feb1-13, 07:43 PM
Homework
Sci Advisor
HW Helper
Thanks
Simon Bridge's Avatar
P: 12,488
Concatinating signals on Matlab

Quote Quote by princess Maro View Post
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(?)


Register to reply

Related Discussions
MATLAB Filtering Signals? Engineering, Comp Sci, & Technology Homework 0
Matlab and Signals processing Electrical Engineering 2
Question about Using the Time Frequency Toolbox for Analysis of Signals (in MATLAB) Electrical Engineering 1
Matlab plotting discrete time signals Engineering, Comp Sci, & Technology Homework 2
Matlab Systems and Signals Problem [EE] Engineering, Comp Sci, & Technology Homework 0