c0 and x are scalars, c - vector, and p - scalar. If c is [ ], then p = c0. If c is a scalar, then p = c0 + c*x . Else, p =

조회 수: 2 (최근 30일)
function [p] = poly_val(c0,c,x)
N = length(c);
n=1:1:N;
if (N<=1)
if(isempty(c))
p=c0;
else
p= c0+(c*x);
end
end
if(N>1)
p = c0+(sum(c(n).*(power(x,n))));
end
end

채택된 답변

Thorsten
Thorsten 2016년 11월 14일
function y = mypolyval(c0,c,x)
if isempty(c)
y = c0;
else
y = c0 + power(x, 1:numel(c))*c(:);
end
The case y = c0 + c*x is already covered by the else. And you can use matrix multiplication of a row and a column vector r*c instead of sum(r.*c').
  댓글 수: 2
Vijayramanathan B.tech-EIE-118006077
This is the easiest method! Well done Mr.Thorsten
*Usage of c(:) is appreciated! :)*
Raunil Raj
Raunil Raj 2018년 3월 6일
really! I went through the same problem. I however don't understand as to how c(:) can convert any row vector or column vector into a column vector. Can someone please explain?

댓글을 달려면 로그인하십시오.

추가 답변 (6개)

Jorge Briceño
Jorge Briceño 2018년 1월 29일
Here is my solution:
function p = poly_val(c0,c,x)
format long
n=(1:1:length(c));
c=c(:)' & This part converts any array/matrix into a colunm vector and transpose...
% it afterwards, since you are working with row vector properties.
if isempty(c)
p=c0;
elseif isscalar(c)
p=c0+sum(c.*x);
else
p=c0+sum((c.*(x.^n)));
end
end

KSSV
KSSV 2016년 11월 10일
편집: KSSV 2016년 11월 10일
function [p] = poly_val(c0,c,x)
N = length(c); % length of c
if N == 0 % if c is empty
p = c0 ;
elseif N == 1 % if c is a scalar
p = c0+c*x ;
else % if c is a vector
p = c0+(sum(c.*(power(x,N))));
end
  댓글 수: 4
Subramanian Mahadevan
Subramanian Mahadevan 2016년 11월 13일
on changing n to N,isn't the polynomial evaluated for only the last value of n i.e N?

댓글을 달려면 로그인하십시오.


Gabir Yusuf
Gabir Yusuf 2017년 8월 8일
if true
function p = poly_val(c0,c,x)
n=length(c);
if sum(size(c))==0
p = c0;
elseif isscalar(c)
p = c0 + c*x;
else
y=1:n;
z=x.^y;
if size(c)==[1 n]
p=sum(c.*z)+c0;
else
c=c';
p=sum(c.*z)+c0;
end
end
end

Anshuman Panda
Anshuman Panda 2017년 8월 19일
function p=poly_val(c0,c,x) a=length(c); if a==0 p=c0; else if a==1 p=c0+c*x; else p=c0 + power(x , 1:a)*c(:); end end end

Darío Pascual
Darío Pascual 2018년 3월 12일
function p=poly_val(c0,c,x)
N = length(c);
n=1:1:N;
d=size(c);
if(isempty(c))
p=c0;
end
if N==1
p= c0+(c*x);
end
if N>1
if d(1)==1
p = c0+(sum(c(n).*(power(x,n))));
else
c=c'
p = c0+(sum(c(n).*(power(x,n))));
end
end

Govind Mishra
Govind Mishra 2018년 3월 14일
function [p] = poly_val(c0,c,x)
if(iscolumn(c)) c=transpose(c); end
N = length(c); n=1:1:N; if (N<=1) if(isempty(c)) p=c0; else p= c0+(c*x); end end if(N>1) p = c0+(sum(c(n).*(power(x,n)))); end end

카테고리

Help CenterFile Exchange에서 Dimensionality Reduction and Feature Extraction에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by