2012-04-04 2 views
2

J'ai un fichier matlab/octave m qui fonctionne mais quand je convertis le fichier M en une fonction et que je l'exécute, j'obtiens une erreur dans la fonction 'nom de la fonction' indéfini près de la ligne 7 colonne 16.fonction permute dans matlab/octave

Voir le fichier workng M ci-dessous:

clear all, clc,clf,tic 
fs=360; 
t=linspace(0,2*pi,fs); 
y=sinc(t*1); 
sigarray=y; 

fs=length(sigarray); 
aa_sig_combined_L=zeros(1,length(fs)); %need to reset or will get noise at the end 
a_L=zeros(1,length(sigarray)); 

cycle_permute_lt = @(sigarray, k) [sigarray(mod((1:end)+k-1, end)+1)]; 
array_phase_shift_div_num=360/mod(180,360) %keep at 360 to get correct deg angles 
array_phase_shift=round(fs/array_phase_shift_div_num) %will keep within 360 degs 

for ii=0:1:fs 
    a_L=cycle_permute_lt(sigarray, ii+array_phase_shift); 
    aa_sig_combined_L = aa_sig_combined_L + a_L;   

end; 
array_shifted=aa_sig_combined_L; 

subplot(2,1,1),plot(t,y), 
title('original') 
subplot(2,1,2),plot(t,aa_sig_combined_L) 
str_title='aa_sig_combined_L'; 
title(str_title,'Interpreter','none') %turns of latex interperter so I can use underscores my way 

Voir le fichier M et fonction créée ci-dessous qui ne fonctionne pas quand on y accède

clear all, clc,clf,tic 
fs=360; 
t=linspace(0,2*pi,fs); 
y=sinc(t*1); 
sigarray=y; 
[array_shifted]=rtpsa(y,180) 

Fonction ci-dessous:

function [array_shifted]=rtpsa(sigarray,deg_to_shift) 
    fs=length(sigarray) 
    aa_sig_combined_L=zeros(1,length(fs)); %need to reset or will get noise at the end 
    a_L=zeros(1,length(sigarray)); 

    cycle_permute_lt = @(sigarray, k) [sigarray(mod((1:end)+k-1, end)+1)]; 
    array_phase_shift_div_num=360/mod(deg_to_shift,360) %keep at 360 to get correct deg angles 
    array_phase_shift=round(fs/array_phase_shift_div_num) %will keep within 360 degs 

    for ii=0:1:fs 
     a_L=cycle_permute_lt(sigarray, ii+array_phase_shift); 
     aa_sig_combined_L = aa_sig_combined_L + a_L;   

    end; 
    array_shifted=aa_sig_combined_L; 

end; 

J'utilise la version d'octave 3.2.4 et ubuntu 10.04 linux

+0

peut-être vous devriez changer le titre de ce poste à ' « nom de la fonction » non défini dans octave' que la nature de ce problème n'a rien à voir avec la fonction permute. – zeffii

Répondre

-1

gars Désolé, je fixe le problème lors de la modification du fichier de fonction dans un éditeur de texte différent, il a changé l'extension .m à un .m. fichier txt.

+0

Le problème ici était probablement le paramètre 'newline' dans votre éditeur de texte, 'nix et window ont des valeurs par défaut légèrement différentes, l'une utilise CR + LF et l'autre utilise simplement LF. Mais ce qui est utilisé est une question de préférence dans des applications individuelles. Peut-être une lecture intéressante: https://en.wikipedia.org/wiki/Newline – zeffii

0

Cela aurait dû être une réponse au lieu d'un commentaire:

La question ici était très probablement le paramètre de saut de ligne dans votre éditeur de texte, « Nix et la fenêtre ont par défaut légèrement différentes, on utilise CR + LF et l'autre utilise juste LF. Mais ce qui est utilisé est une question de préférence dans des applications individuelles.

Peut-être une lecture intéressante: wikipedia on newlines

Questions connexes