필터 지우기
필터 지우기

Recreating a multiport switch with code

조회 수: 2 (최근 30일)
Muneer
Muneer 2013년 10월 15일
댓글: Muneer 2013년 10월 23일
I have 40 different streams of data (formatted time, value) numbered 1 through 40 and one control stream that selects which data stream to pass through (time, stream id). I'm trying to switch between different streams of data depending on what the control stream says can be passed through. For example, control stream (time, stream id)
0 1
1 3
2 3
3 1
4 1
5 5
6 4
7 9
8 2
9 1
10 1
So for time 0-.9 (assuming resolution is .1) the first data stream should be passed through (select time=0 to .9 from data stream and make it first portion in new stream) then for 1 to 2.9 pass through the data from stream 3 that has a time of 1 to 2.9 and attach it to the end of the new stream, etc. At the end you have one data stream that's made up of parts of the 40 different streams.
This is essentially what a multiport switch does, but I wanted to try and recreate the operation in code. Any help would be greatly appreciated.
Thanks in advance for your help!

채택된 답변

Nishitha Ayyalapu
Nishitha Ayyalapu 2013년 10월 15일
1.) Store each data stream as a column vector (just the values). Since time stamps for all the streams are starting at 0 and sampled at 0.1 secs (or any units of time), we use indexing to locate the right time interval. Once you do this, you will have 40 column vectors
DatStream1, Datstream2... Datstream40
2.) concatenate all of them into one Matrix of 40 Columns. let us say
DataMatrix
So for example, if you want to access Stream 20 you would access by indexing DataMatrix as:
DataMatrix(:,20)
From here on your code would be
ControlStream = [0 1 1 3 2 3 3 1 4 1 5 5 6 4 7 9 8 2 9 1 10 1];
newStream = [];
startindex = ControlStream(1:2:end);
endindex = startindex+10;
streamNum = ControlStream(2:2:end);
for i = 1:length(startindex)
newStream = [newStream DataMatrix(startindex(i):endindex(i),streamNum(i))];
end
  댓글 수: 2
Muneer
Muneer 2013년 10월 23일
I apologize for the late response, this is a huge help.
If you notice, the control stream has a value of 0 in it, but there is no 0th stream in my datamatrix. So I'm assuming when a 0 pops up, it won't know what to pass through and it will yield an error. Is there any way to apply a value to all these 0s in the control stream? For example, for every zero that comes up, pass it through and replace it with "NULL" or something in the final stream.
Really appreciate the help.
Muneer
Muneer 2013년 10월 23일
Also,
could you comment on your indexing a little more. I don't completely follow why you called the odd and even elements and added ten.
Thanks

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Walter Roberson
Walter Roberson 2013년 10월 15일
[count, idx] = histc(currenttime, control_table(:,1));
datastream = control_table(idx, 2);

카테고리

Help CenterFile Exchange에서 Data Import and Management에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by