2015-08-25 2 views
0

Я собрал таблицу с тремя столбцами в виде CSV-файла, и я хочу прочитать каждый столбец в другом массиве. Я посмотрел в файлах справки Scilab и в других местах на этом сайте, и это выглядит как это должно работать:Прочитайте таблицу из .csv в несколько массивов в SciLab

e=zeros(641,1)   //Initialise array of energy values 
    P=zeros(641,1)   //Initialise array of Power values 
    mu=zeros(641,1)   //Initialise array of attenuation values 
    clc      //Clear console 
    MYDATA = read_csv ('C:\Users\ID914317\Box Sync\PhD\Data\power_atten.csv')  //read in array of energies, powers and attenuation coefficients 
    Z=evstr(MYDATA)   //evaluate array of strings into numerical values 
    disp(Z)     //output array to console (debug) 
    for i=1:641    //loop through number of rows 
     e(i)=Z(1,i)    //assign column 1 values to array of energies 
     P(i)=Z(2,i)    //assign column 2 values to array of powers 
     mu(i)=Z(3,i)   //assign column 3 values to array of attenuations 
    end 
    disp(e) 
    disp(P) 
    disp(mu) 

Всякий раз, когда я пытаюсь запустить это, я получаю следующее сообщение об ошибке в консоли:

e(i)=Z(1,i)    //assign column 1 values to array of energies 
       !--error 21 
    Invalid index. 
    at line  10 of exec file called by :  
    lab\absorption interpolation.sce', -1 

В основном я преподаю в SciLab, поэтому любая помощь в отношении того, что я делаю неправильно, будет очень признательна!

ответ

0

Nevermind, я разобрался - я имел ссылку на массив обратный:

for i=1:641    //loop through number of rows 
      e(i)=Z(1,i)    //assign column 1 values to array of energies 
      P(i)=Z(2,i)    //assign column 2 values to array of powers 
      mu(i)=Z(3,i)   //assign column 3 values to array of 
    end 

должен был быть:

for i=1:641    //loop through number of rows 
      e(i)=Z(i,1)    //assign column 1 values to array of energies 
      P(i)=Z(i,2)    //assign column 2 values to array of powers 
      mu(i)=Z(i,3)   //assign column 3 values to array of attenuations 
    end 
+2

Зачем вам нужен цикл вообще? Более простой и быстрый: e = Z (1: 641,1); Р = Z (1: 641,2); му = Z (1: 641,3); – Attila

Смежные вопросы