How do I decode encrypted data and plot it??
    14 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Beau Imber
 el 10 de Mayo de 2022
  
    
    
    
    
    Editada: Beau Imber
 el 15 de Mayo de 2022
            I have some data that is encrypted so that values <1.2V are considered logic 0 and values >2.2V are considered logic 1. The true signal is either 0V (for logic 0) or 3.3V (for logic 1), and any value above or below this threshold will include noise. I am stuck on how to get the values to stay within the threshold and how to plot the new data once it does so. 
I have attached the data and my code so far but I am unsure of how to progess. Can I get any help? 
time = xlsread('data.csv', 'A2:A201');
pair_1 = xlsread('data.csv', 'B2:B201');
pair_2 = xlsread('data.csv', 'C2:C201');
pair_3 = xlsread('data.csv', 'D2:D201');
pair_4 = xlsread('data.csv', 'E2:E201');
if pair_1 < 1.2 
    pair_1 = 0 
if    pair_1 > 2.2
    pair_1 = 3.3
    plot(time, pair_1)
end 
end 
0 comentarios
Respuesta aceptada
  Mitch Lautigar
      
 el 10 de Mayo de 2022
        You have a couple different ways to do this. I've listed two below to try and help.
Both ways I did it start with the following.
%--------------------------------------------------------------------------------------------------------------------------%
%                                                             Predeclarations                                                            %
data = readtable('data.csv'); %read in csv file as a table. xlsread is being/has been phased out.
data2 = table2array(data); %gets csv file into an array for easy checking.
%--------------------------------------------------------------------------------------------------------------------------%
%method 1 -- for loops
%this method works because data2 is an array of set size.
%    Advantages: Easy to debug, and results are quite viewable.
%    Disadvantages: If you are looking at 10k data points, this can become memory intensive.
data_check_array = []; %empty array to stack in checks.
[a,b]  = size(data2);
for i = 1:length(data2) %handles each row
stack = [];
    for j = 2:b %handles each column ignoring the time value.
        if (data2(i,j) >= 1.2) && (data2(i,j) <= 2.2) %this means neither true or false
            stack = [stack,0.5];
        elseif (data2(i,j) < 1.2) %means false
            stack = [stack,0];
        else %means true
            stack = [stack,1];
        end
    end %end j for loop
data_check_array = [data_check_array;stack];
end %end i for loop
%--------------------------------------------------------------------------------------------------------------------------%
% method 2 -- Hide and Seek
%This method works because you are only seeking specific numerical values in the table
%    Advantages: This method is quick on computations and leads to solid end results
%    Disadvantages: This method is much harder to debug.
true_indx = find(data2(:,2:end) > 2.2);
false_indx = find(data2(:,2:end) < 1.2);
[a,b]  = size(data2);
check_array(1:a,2:b) = 0.5; %assume all values are not checked to not have to have a null index.
check_array(true_indx) = 1;
check_array(false_indx) = 0;
check_array(:,1) = data2(:,1);
%--------------------------------------------------------------------------------------------------------------------------%
I sadly don't have the capabilities to test this code, but I am confident the logic is good. Hope it helps!
0 comentarios
Más respuestas (0)
Ver también
Categorías
				Más información sobre Whos en Help Center y File Exchange.
			
	Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

