Pagina 1 di 1

Problema matlab mac (\bin \bash commad not found)

Inviato: 1 giu 2014, 20:18
da raddu
ciao a tutti,
vorrei porvi un problema che mi sta facendo diventare matto.
con un pico scope ho acquisito dei file da un milione di punti l'uno di durata di 1 secondo, e successivi, fino ad arrivare a 30 secondi. Per analizzare i dati ho bisogno di unire i file da 1.txt fino a 30.txt.
inizialmente caricavo i file singolarmente e li salvavo col seguente codice:(per semplicità ho creato dei file con la stessa struttura di quelli generati dal piko mantenendo 2 colonne e riducendo le righe a 5)
a=load('1.txt')
t=load('2.txt')
tot=[s;t]
save ('tot*')
questo metodo funziona senza problema alcuno, ma avendo più set di dati avrei voluto automatizzare il caricamento dei file e provai nel seguente modo

Codice: Seleziona tutto

aa=dir('*.txt') % file nella cartella
sizeaa=size(aa,1)
for j=1:size(aa,1)
     nome(j,:)=aa(j).name
     s=[load(nome(j,:),'*.txt')]
 end

ma nel ciclo for non riuscivo a salvare la variabile e mi sovrascriveva, dopo svariate ricerche so google mi hanno consigliato questo ciclo:

Codice: Seleziona tutto

x = char('copy 1.txt');
for i = 2 : 3
x = strcat(x, '+', '\n', '+', num2str(i), '.txt');
end
system(strcat(x, ' merge.txt'))

ma qui nasce un problema, non mi va proprio, non mi da i soliti errori in rosso ma carica il seguente messaggio:

Codice: Seleziona tutto

/bin/bash: copy: command not found

ans =

   127


cercando online si trovano delle informazioni ma onestamente non ci capisco niente, e quindi non riesco a correggere il codice.
se non ho capito male è un problema legato alla localizzazione dei file nel caricare la cartella
ho provato ad aggiornare matlab 2011a, x11 e tutto quello che potevo aggiornare ma niente, ho provato a installare nuovamente come tentativo disperato.
Se ci fosse un modo per raggiungere lo scopo con un altro comando ben venga, senno sapreste mica consigliarmi cosa provare a fare?!?

Re: Problema matlab mac (\bin \bash commad not found)

Inviato: 1 giu 2014, 20:31
da DanteCpp
La shell ti sta semplicemente dicendo che il comando copy non esiste!
Non ho ben capito come lavora l'ultima soluzione che hai postato, comunque sia se il tuo obbiettivo è semplicemente unire più file in un unico, penso sia più pratico scrivere direttamente un piccolo script bash piutosto che lavorare su matlab!

Re: Problema matlab mac (\bin \bash commad not found)

Inviato: 1 giu 2014, 21:48
da DirtyDeeds
In Matlab, correggendo il tuo codice iniziale:

Codice: Seleziona tutto

flist = dir('*.txt');
merged_data = [];
for j = 1:size(flist,1)
  current_data = load(flist(j).name);
  merged_data = [merged_data; current_data];
end


Un'altra possibilità, migliore, è questa:

Codice: Seleziona tutto

flist = struct2cell(dir('*.txt'));
data = cellfun(@load,flist(1,:),'UniformOutput',false);
merged_data = cell2mat(data(:));