【问题标题】:permute function in matlab/octavematlab / octave中的置换函数
【发布时间】:2012-04-18 13:29:19
【问题描述】:

我有一个可以工作的 matlab/octave m 文件,但是当我将 M 文件转换为函数并运行它时,函数中出现错误,提示在第 7 行第 16 列附近未定义“函数名”。

参见下面的工作 M 文件:

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

查看下面创建的 M 文件和函数在访问时不起作用

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

函数如下:

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;

我使用的是 octave 版本 3.2.4 和 ubuntu 10.04 linux

【问题讨论】:

  • 或许你应该把这篇文章的标题改成'function name' undefined in octave,因为这个问题的性质与置换函数无关。

标签: matlab permutation octave


【解决方案1】:

抱歉,我在其他文本编辑器中编辑函数文件时解决了问题,它将 .m 扩展名更改为 .m.txt 文件。

【讨论】:

  • 这里的问题很可能是您的文本编辑器中的newline 设置,'nix 和 window 的默认值略有不同,一个使用 CR+LF,另一个只使用 LF。但是使用什么是个别应用程序中的偏好问题。也许是一个有趣的阅读:en.wikipedia.org/wiki/Newline
【解决方案2】:

这应该是一个答案而不是评论:

这里的问题很可能是文本编辑器中的换行符设置,'nix 和 window 的默认值略有不同,一个使用 CR+LF,另一个只使用 LF。但是使用什么是个别应用程序中的偏好问题。

也许读起来很有趣:wikipedia on newlines

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多