필터 지우기
필터 지우기

Error using repmat function

조회 수: 5 (최근 30일)
Nik Sam
Nik Sam 2016년 5월 12일
댓글: Walter Roberson 2016년 5월 25일
Error using repmat
Replication factors must be a row vector of integers or integer scalars.
Can anyone tell me why i get this error when I am trying to use
x{i} = repmat(shiftdim(varargin{i}(j,:),1-i),repvec);
  댓글 수: 2
Walter Roberson
Walter Roberson 2016년 5월 12일
What is in repvec ? What is class(repvec) ?
Nik Sam
Nik Sam 2016년 5월 13일
편집: Walter Roberson 2016년 5월 13일
function fzr = rtrm(func, varargin)
% RTRM Fast, vectorized implementation of the
reduced transformation method
% using multi-dimensional arrays.
% FZR = RTRM(FUNC, FZ1, FZ2, ..., FZN)
% calls the reduced transformation method
% with N fuzzy numbers in alpha-cut repre-
% sentation. The function FUNC must be an
% analytical expression using \textsc{Matlab}'s
% array arithmetic (or logic) operators.
%
% Example:
% f = inline('x.^2 - y');
% fz1 = [0 5; 1 4; 2 3; 2.5 2.5];
% fz2 = [1 3; 1.5 2.5; 1.75 2.25; 2 2];
% fzr = rtrm(f, fz1, fz2)
% plot(fzr,linspace(0,1,4))
n = nargin - 1;
m = size(varargin{1},1) - 1;
fzr = repmat([inf -inf],m+1,1);
for j = m+1:-1:1
for i = 1:n
repvec = 2*ones(n,1);
repvec(i) = 1;
x{i} = repmat(shiftdim(...
varargin{i}(j,:)',1-i),repvec);
end
z = reshape(feval(func,x{:}),2^n,1);
fzr(j,1) = min(min(z),fzr(min(j,m)+1,1));
fzr(j,2) = max(max(z),fzr(min(j,m)+1,2));
end
This all the code

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

답변 (1개)

Walter Roberson
Walter Roberson 2016년 5월 13일
Where you have
repvec = 2*ones(n,1);
change that to
repvec = 2*ones(1,n);
  댓글 수: 2
Nik Sam
Nik Sam 2016년 5월 13일
Now I get this.Why?
Error using inlineeval (line 14)
Error in inline expression ==> x.^2 - y
Matrix dimensions must agree.
Error in inline/feval (line 33)
INLINE_OUT_ = inlineeval(INLINE_INPUTS_, INLINE_OBJ_.inputExpr, INLINE_OBJ_.expr);
Error in rtrm (line 27)
z = reshape(feval(func,x{:}),2^n,1);
Walter Roberson
Walter Roberson 2016년 5월 25일
With just the change I mentioned, I get results. I have enclosed the edited file. I tested with
f = inline('x.^2 - y');
fz1 = [0 5; 1 4; 2 3; 2.5 2.5];
fz2 = [1 3; 1.5 2.5; 1.75 2.25; 2 2];
fzr = rtrm(f, fz1, fz2)

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

카테고리

Help CenterFile Exchange에서 Debugging and Analysis에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by