hello experts...see I am executing a code....want some suggestions

My code is
%script----------------------------------%
X= ' PPtPPPPP';
lengh=numel(X);
aaAA=estring(X);
zz=numel(aaAA);
comp_ratio=(lengh)/(zz)
%------------------------------------------
function y = estring(str)
len = numel(str);
i = 0;
count = zeros(1,len);
y=[];
while( i<len )
j=0;
count(i+1) = 1;
if(count==1)
y=[y 1];
while( true )
j = j + 1;
if( i+j+1 > len )
break;
end
if( str(i+j+1)==str(i+1) )
count(i+1) = count(i+1) + 1;
else
break;
end
end
if( count(i+1)==1 )
a=str(i+1);
length(a);
y = [y a];
i = i + 1;
else
a=str(i+1);
b=count(i+1);
y =[y a b];
i = i + b;
end
end
end
Input: PPtPPPPP
numel(Input)=8
*Output :* P tP [space at the end]
numel(Output)=5
I want this to be like Output" P t P [space] numel(output)=4
Please help me to modify the code to consider single count as character plus space

Answers (1)

To achieve that output:
  • do not do anything special for count 1: treat it like all of the others
  • Output = fliplr( aaAA(1:2:end) )

8 Comments

Thank you for your reply. But I am not getting it. Can you please elaborate?
Replace the line
if( count(i+1)==1 )
with
if false
Then in your test script after you have computed the compression ratio,
bytes_from_encoding = aaAA(1:2:end );
reversed_bytes = fliplr(bytes_from_encoding);
str_of_reversed_bytes = char(reversed_bytes);
It is giving just a reversed string Not the desired output
X
X =
ttP
>> aaAA
aaAA =
t P
>> str_of_reversed_bytes
str_of_reversed_bytes =
Pt
You did not use the same X as in your problem statement, so I cannot compare the result to what you had stated that you wanted.
done with this....but I want to know further....in some situations it is giving compression ratio up to 100...is it OK?

Sign in to comment.

Categories

Find more on Signal Processing Toolbox in Help Center and File Exchange

Asked:

on 6 May 2015

Commented:

on 9 May 2015

Community Treasure Hunt

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

Start Hunting!