Please help me to position the starting and ending point of data

Hello all,
I have a long set of data I need to set starting and ending position of data.
Starting position is at "M"
ending is at "I"
I need to cut all the data Starting from "M" to ending "I" and place it in to new vector.

4 Comments

Rakesh - what is the format of this data? Are you reading it from a file or from something else? Please provide more details including a small example.
Something like this?
newData = data(M:I);
% or
newData = data(M:I, :):
What's the shape of your data and over what dimension are you indexing?
Hello all the data is HEXDEC
Look at the example:
Frames= M0400FEC9F93DF7EA02AFF9F308540209041B0746FA8B0351F671FAD0FC92F69706E9FCAC08EA05AB00430745F6AEFEA4F8F3F8100189F8CA087C002A064C0725FBC70382F722FAE6FDAEF8AE04D6FCA206BB0245024B0508FA5DFFBEFA84F9CB020CFBCF04FCFF9FBFF8B008FFFF70154016F0089037CFD720227FD06FF42FFE6FF16014E00AC00EE027DFEE5031AFCB0|
How can i know the position of the M and | ? and I need to divide every 4 datas in the whole frame.
for example size = Frames(1:4);
Length = Frames(5:8); ........so on but its too long any other option?
Example:
str = 'M0400FCFFFAF2F7D1046DFB3808A2039B02830741F8DB01A2F6EDF94DFECEF73A083DFE6D0826069EFE540659F5D5FCE2FA71F7BE0346F9D608D3018D05250794FA02022FF727F9B2FF5FF924059FFD5806D1035700FB050BF8FDFE4CFB20F93B0336FC520520000E032A0250FE99010DFBFCFCB8FFADFC0E0365FEE20124FFB10151FF2A006D002EFFFE019401F7FF9D02DEFDCF0112FE92FFD2FFF7FFC1013200AF013802C9FEAC02FFFCBB0011FECEFEDA01080003015501DBFFE30330FD56|';
posofM = strfind(str, 'M');
posofLast = strfind(str, '|');

Sign in to comment.

 Accepted Answer

Example:
str = 'M0400FCFFFAF2F7D1046DFB3808A2039B02830741F8DB01A2F6EDF94DFECEF73A083DFE6D0826069EFE540659F5D5FCE2FA71F7BE0346F9D608D3018D05250794FA02022FF727F9B2FF5FF924059FFD5806D1035700FB050BF8FDFE4CFB20F93B0336FC520520000E032A0250FE99010DFBFCFCB8FFADFC0E0365FEE20124FFB10151FF2A006D002EFFFE019401F7FF9D02DEFDCF0112FE92FFD2FFF7FFC1013200AF013802C9FEAC02FFFCBB0011FECEFEDA01080003015501DBFFE30330FD56|';
posofM = strfind(str, 'M');
posofLast = strfind(str, '|');

More Answers (1)

Frames= 'M0400FEC9F93DF7EA02AFF9F308540209041B0746FA8B0351F671FAD0FC92F69706E9FCAC08EA05AB00430745F6AEFEA4F8F3F8100189F8CA087C002A064C0725FBC70382F722FAE6FDAEF8AE04D6FCA206BB0245024B0508FA5DFFBEFA84F9CB020CFBCF04FCFF9FBFF8B008FFFF70154016F0089037CFD720227FD06FF42FFE6FF16014E00AC00EE027DFEE5031AFCB0|' ;
p0 = strfind(Frames,'M') ;
p1 = strfind(Frames,'|') ;
S = Frames(p0:p1) ;
iwant = reshape(S(1:100),4,[])' ;
To reshape,,you need to have comaptibility with elements. Read about reshape

6 Comments

Thanks is accepting and voting the answer..:)
Reshape is picking every 4th element of the data, I need the other way for example
if we have data = 123456789
I need 12
34
56
78
data = num2str(12345678)
reshape(data,2,[])'
This is the ans for the above code :
val =
'1357'
'2468'
I want 12
34
56
78
KSSV's solution is doing what you want it to do

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!