Ich hatte das gleiche Problem. Die Warnungen ändern die Funktionalität des Codes nicht, sind jedoch ein Problem, wenn Sie versuchen, das Befehlsfenster für nützliche Ausgaben zu verwenden. Da die Warnung von einer großen Anzahl von CVX-Dateien kam, schrieb ich ein Skript, um alle zu beheben. Um alle CVX-Dateien mit nargchk zu reparieren, kopiere den folgenden Code in eine Datei mit dem Namen 'update_nargchk.m' und führe ihn entweder ohne Argumente im cvx root-Ordner aus oder führe ihn von woanders aus mit einem string-Argument auf dein cvx-root Mappe.
function update_nargchk(directory)
%UPDATE_NARGCHK Updates files using the depricated nargchk
% All files in the specified directory (or current directory if
% unspecified) are searched. If an instance of nargchk is found being
% used (with nargin) it is updated to use narginchk with the same values.
if ~exist('directory','var')
directory = '.';
end
recurse(directory);
end
function recurse(folder)
d = dir(folder);
for elem = 1:length(d)
if ~strcmp(d(elem).name,'.') && ~strcmp(d(elem).name,'..')
if d(elem).isdir
recurse([folder '/' d(elem).name]);
else
if strcmp(d(elem).name(end-1:end),'.m')
updateFile([folder '/' d(elem).name]);
end
end
end
end
end
function updateFile(filename)
% read file contents into workspace
fid = fopen(filename);
C=textscan(fid,'%s','delimiter','\n','whitespace','');
C = C{1,1};
fclose(fid);
% check for instances of nargchk
instanceFound = false;
for k=1:numel(C)
textline = C{k,1};
if ~isempty(regexp(textline,'^[^%]*nargchk','ONCE')) && ...
~isempty(regexp(textline,'^[^%]*nargin','ONCE'))
instanceFound = true;
nums = regexp(textline,'(\d+|-?Inf)','tokens');
nums = [str2double(nums{1}) str2double(nums{2})];
C(k) = {['narginchk(' num2str(nums(1)) ',' num2str(nums(2)) '); % Modified from: ' textline]};
end
end
if instanceFound
% print new file
fid = fopen(filename,'w'); % Open the file
for k=1:numel(C)
fprintf(fid,'%s\r\n',C{k,1});
end
fclose(fid);
disp([filename ' updated'])
end
end
Vielen Dank. Ich habe die Warnung ausgeschaltet. Aber diese sind immer noch gedruckt. Jedenfalls möchte ich diese Warnung überhaupt nicht. Ich frage mich nur, wie kann ich remoteParallelFunction finden und einige Änderungen vornehmen? – Erin
@Erin - Wenn Sie 'cvx' herunterladen, öffnen Sie den Ordner, der den Code enthält, und gehen Sie dann zu'/lib/@ cvx/bcompress.m'. Ändere die Zeile in Zeile 2 'error (nargchk (1, 3, nargin));' in 'error (narginchk (1, 3));'. Ich werde meinen Beitrag aktualisieren. Stellt sich heraus, dass "remoteParallelFunction" nicht der Schuldige war, aber das ist, wo der Anruf stammt. – rayryeng