2015-07-21 12 views
0

Эта функция Matlab, которую я создал, в основном принимает файл csv, созданный tektronix osciloscopes, и отображает сигналы для двух каналов. Однако каждый созданный файл test и csv имеет другое количество точек (для этого случая 9999, что означает [B16:B10014]) и другое имя для рабочего листа в excell (tek0001ALL). Я новичок в Matlab, и это может быть не лучший эффективный для кода способ сделать это, поэтому мне было интересно, может ли быть более простой способ иметь общий код, который мог бы построить какой-либо csv-файл, который может обнаружить последнюю ячейку, заполненную эти количества и количество ячеек, так что это также может быть количество очков, поскольку иногда требуется выполнить множество тестов.Как я могу улучшить этот код для импорта сигнала osciloscope из csv в matlab

function [ Vs1, Vs2, t ] = scope![enter image description here][1](filename) 

% Read the Y axis data of the scope data in volts CH1 
Vs1 = xlsread(filename, 'tek0001ALL', 'B16:B10014'); 
% Read the Y axis data of the scope data in volts CH2 
Vs2 = xlsread(filename, 'tek0001ALL', 'C16:C10014'); 
% Read the sample interval from the scope data in seconds 
sample_interval = xlsread(filename, 'tek0001ALL', 'B7'); 
% Create time axis 
t = 0:sample_interval:(9999*sample_interval)-sample_interval; 

%Plot waveform 
figure 
subplot(2,1,1); 
plot(t,Vs1); 
title('Sensor Input Measurements for 100pc Discharge '); 
xlabel('Time[s]'); 
ylabel('Voltage[V]'); 
grid on; 
grid minor; 

subplot(2,1,2); 
plot(t,Vs2); 
title('Sensor Output Measurements for 100pc Discharge'); 
xlabel('Time[s]'); 
ylabel('Voltage[V]'); 
grid on; 
grid minor; 

end 

Пример формата CSV файла выглядит следующим образом:

Model,DPO3034 
Firmware Version,1.08 

Point Format,Y, 
Horizontal Units,S, 
Horizontal Scale,8e-07, 
Sample Interval,8e-10, 
Record Length,10000, 
Gating,0.0% to 99.9900%,0.0% to 99.9900% 
Probe Attenuation,1,1 
Vertical Units,V,V 
Vertical Offset,0,0 
Vertical Scale,0.05,0.001 
Label,, 
TIME,CH1,CH2 
-1.4664e-06,-0.003,-0.00036 
-1.4656e-06,-0.003,-0.00036 
-1.4648e-06,-0.003,-0.00036 
-1.4640e-06,-0.001,-0.00032 
-1.4632e-06,-0.003,-0.00036 
-1.4624e-06,-0.001,-0.00036 
-1.4616e-06,-0.001,-0.0004 
-1.4608e-06,-0.003,-0.00036 

ответ

1

Если оставить данные в файле CSV, вы можете использовать csvread, который делает это легко.

function [ Vs1, Vs2, t ] = scope(filename) 

%Read csv with 15 header rows 
data = csvread(filename, 15); 

t = data(:,1); 
Vs1 = data(:,2); 
Vs2 = data(:,3); 

%Plot waveform 
figure 
    subplot(2,1,1); 
     plot(t,Vs1); 
     title('Sensor Input Measurements for 100pc Discharge '); 
     xlabel('Time[s]'); 
     ylabel('Voltage[V]'); 
     grid on; 
     grid minor; 

    subplot(2,1,2); 
     plot(t,Vs2); 
     title('Sensor Output Measurements for 100pc Discharge'); 
     xlabel('Time[s]'); 
     ylabel('Voltage[V]'); 
     grid on; 
     grid minor; 

end