How to resolve "Conversion to double from cell is not possible."
179 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
James Carter
am 1 Mai 2013
Kommentiert: Walter Roberson
am 27 Sep. 2018
Can someone point out what I am doing wrong. If I use the internals of the following function in command-line, the code works fine, but when I attempt to execute through the function, I get the error listed above listed for line 12. The offending code is: NewArry(3:LenB+2) = varargin;
function [maxVal, maxInd] = inner_product(varargin)
% varargin contains the accumulated signal returns
K = [2 3 10 2 1];
LenB = length(varargin);
EndL = varargin(1);
EndR = varargin(LenB);
%Pre-allocate New Array
NewArry = zeros(1,LenB + 4);
NewArry(3:LenB+2) = varargin;
NewArry(1) = EndL;
NewArry(2) = EndL;
NewArry(LenB + 3) = EndR;
NewArry(LenB + 4) = EndR;
FinalArry = zeros(1:LenB); %Preallocate array to hold inner product values
for x = 1:LenB
%Take the first group of 5 from the NewArray
Y = NewArry(x:x+4);
%Take The Inner Product of this with the Kernel
IP = Y * K';
%Store this value
FinalArry(1,x) = IP;
end
[maxVal, maxInd] = max(FinalArry);
end
When I assign varargin, and then pass it to the function, [maxVal, maxInd] = inner_product(varargin) it fails.
Thanks
1 Kommentar
Walter Roberson
am 27 Sep. 2018
FinalArry = zeros(1:LenB);
is incorrect. It would try to create a 1 x 2 x 3 x 4 x.... LenB array.
Akzeptierte Antwort
Walter Roberson
am 1 Mai 2013
varargin is a cell array, and you cannot assign a cell array to a numeric array. Look again at your statements
NewArry = zeros(1,LenB + 4);
NewArry(3:LenB+2) = varargin;
2 Kommentare
Walter Roberson
am 1 Mai 2013
No, varargin{1} might be a 1 x 1021 vector, but varargin will always be a cell array.
Outside of a function, varargin references the script that is just the help information for varargin, and would present an error if used in a context that requires a value. varargin inside a function is special.
foo = @(varargin) class(varargin)
now try
foo([1 2 3])
and
foo('hello', 83)
and notice that each time the result is "cell".
Weitere Antworten (2)
David Weuffel
am 27 Sep. 2018
Bearbeitet: David Weuffel
am 27 Sep. 2018
for everybody still searching for answers to this:
it is also possible, that in some scenarios you are trying to convert a char array eg.:
'word'
'2.345'
try using
str2double();
0 Kommentare
Siehe auch
Kategorien
Mehr zu GenICam Interface finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!