Convert Data from array

조회 수: 2 (최근 30일)
David Jones
David Jones 2020년 9월 22일
댓글: Star Strider 2020년 9월 24일
Hi
I have attached a Jpeg of my data file displayed in a plot,(0 to 80mS) it shows exactly the data I need how do I convert this data to a new array as is in the plot. The actual array use to create the plot has 16000 samples at 5uS per sample which is of no interest .I just need the 1s and 0s as the plot along with there timing and not 16000 1s and 0s
Thank you for any help
David

채택된 답변

Star Strider
Star Strider 2020년 9월 22일
I am not certain what your data are, or what you want to do.
One option for reducing the size of the array and still getting the plot is to use the find function to detect the 1 and 0 levels, and simply store them. Use the stem function to plot them. Another (likely more robust) option is to use the Signal Processing Toolbox midcross function to detect the pulses.
The find function might return something like this:
idx = [1 5 6 9 21 23 30 35 40];
that you could then plot as:
figure
stem(idx, ones(size(idx)), 'Marker','none')
grid
.
  댓글 수: 8
David Jones
David Jones 2020년 9월 24일
Hi
I think I have managed to convert the data and have attached a copy of the decoded file can you please show me how I can extract the bits as in the file (Kpnai.jpg) start bits 8,9 and then the bytes, any help would be greatly appreciated.
Thank You
Star Strider
Star Strider 2020년 9월 24일
I honestly have no idea how best to do that.
Try this:
D = load('mandecode.mat');
y = D.manchesterDecoded;
st = [1 strfind(y, [0 1])];
en = strfind(y, [1 0]);
sten = sort([st en]);
dsten = diff([0 sten]); % <— This May Be What You Want
bitlen = min(dsten);
figure
histogram(dsten, 2*numel(st))
figure
plot(y, 'LineWidth',1.5)
grid
figure
plot(dsten)
grid
.

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

추가 답변 (1개)

Ameer Hamza
Ameer Hamza 2020년 9월 22일
It seems that you want to reduce the number of samples. For your data, a good option seems to be decimate(): https://www.mathworks.com/help/signal/ref/decimate.html
  댓글 수: 5
Ameer Hamza
Ameer Hamza 2020년 9월 22일
Check this code. It just keeps one value of 1s and 0s for each consecutive sequence along with the corresponding time
load Data.mat
n = numel(sqwvx);
Ts = 5e-6;
t = 0:Ts:(n-1)*Ts;
idx = find(diff(sqwvx));
t_new = t(idx);
sqwvx_new = sqwvx(idx);
David Jones
David Jones 2020년 9월 23일
Thank you for your help

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

카테고리

Help CenterFile Exchange에서 Multirate Signal Processing에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by