Function definitions are not permitted in this context.

help me
Function definitions are not permitted in this context.

1 个评论

Note also that your function outputs three arguments , code, xq, sqnr which you need to concatenate [ ] , inside the function

请先登录,再进行评论。

回答(2 个)

OP was running R2014b, so local functions are not allowed in script files.
VBBV
VBBV 2024-4-24
编辑:VBBV 2024-4-24

Rename the file ok.m to uniform_pcm.m and save file. Type the name of function from command window (giving input arguments) and execute.

14 个评论

If the first line in your file starts with keyword function , then it's considered as function file.
i have try but i not work
Ok, It seems function starts later in your code. So, you can rename back to whatever name the file previously had. i.e. ok.m
After line 5 i.e.
x = cos(..) + sin(...) % something
you need to call the function by its name as below
[code,xq,sqnr] = uniform_pcq(x,64) % not in command window but inside the file
function [code,xq,sqnr] = uniform_pcq(x,M)
% your code
% your code
% ...
end
Then run the file again by green button (run button)
clc ;
clear all;
T=1/20*pi
t=0:T:1;
x = cos(20*pi*t+pi/2) + 3*sin(10*pi*t) + 5*cos(15*pi*t+pi);
function [code,xq,sqnr] = uniform_pcm(x,M)
Nb=log2(M);
Amax =max(abs(x));
delta=2*Amax/(M-1);
Mq=-Amax:delta:Amax;
M1=0:M-1;
xq= zeros (size(x));
xcode = xq;
for k=1:M
ind =find(x > Mq(k) - delta/2 & x<= Mq(k) + delta/2);
xq(ind)= Mq(k);
xcode (ind) = M1(k) ;
end
end
code = de2bi (xcode, Nb, ' left -msb');
[code,xq,sqnr] = uniform_pcm(x,64)
it still have the same error
clc ;
clear all;
T=1/20*pi
T = 0.1571
t=0:T:1;
x = cos(20*pi*t+pi/2) + 3*sin(10*pi*t) + 5*cos(15*pi*t+pi);
[code,xq] = uniform_pcm(x,64)
code = 7x6
0 0 1 1 0 0 0 0 1 1 1 0 1 0 0 0 1 1 1 1 1 1 1 1 1 0 1 0 0 1 0 0 1 1 1 1 0 0 0 0 0 1
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
xq = 1x7
-5.0844 -4.5629 0.9126 8.2132 2.4770 -4.3021 -7.9525
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
function [code,xq] = uniform_pcm(x,M)
Nb=log2(M);
Amax =max(abs(x));
delta=2*Amax/(M-1);
Mq=-Amax:delta:Amax;
M1=0:M-1;
xq= zeros (size(x));
xcode = xq;
for k=1:M
ind =find(x > Mq(k) - delta/2 & x<= Mq(k) + delta/2);
xq(ind)= Mq(k);
xcode (ind) = M1(k) ;
end
code = de2bi (xcode, Nb, 'left-msb');
[code,xq.'];
end
% what is sqnr variable ... that is not seen anywhere in your code, yet you
% want it as output ?
can you show me the image that you code
i don't know why my code not work
%>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
% put this code in script file & name it as ok.m (valid filename)
%>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
clc ;
clear all;
T=1/20*pi
t=0:T:1;
x = cos(20*pi*t+pi/2) + 3*sin(10*pi*t) + 5*cos(15*pi*t+pi);
[code,xq] = uniform_pcm(x,64) % call the function inside ok.m
% ----------------------------------
% >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
% name this file separate as uniform_pcm.m but inside the same folder where
% ok.m is located
% >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
function [code,xq] = uniform_pcm(x,M)
Nb=log2(M);
Amax =max(abs(x));
delta=2*Amax/(M-1);
Mq=-Amax:delta:Amax;
M1=0:M-1;
xq= zeros (size(x));
xcode = xq;
for k=1:M
ind =find(x > Mq(k) - delta/2 & x<= Mq(k) + delta/2);
xq(ind)= Mq(k);
xcode (ind) = M1(k) ;
end
code = de2bi (xcode, Nb, 'left-msb');
[code,xq.'];
end
% what is sqnr variable ... that is not seen anywhere in your code, yet you
% want it as output ?

@Vu run the above code, ok.m file given in code. Both files ok.m and uniform_pcm.m need to be in same FOLDER. Since you are using R2014b version, the function definitions are not allowed inside script file as error messages tell. Otherwise check with a higher version and run your code.

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息

提问:

Vu
2024-4-24

编辑:

2024-10-23

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by