Code runs well on Windows but gets errors on Apple Silicon Mac

7 次查看(过去 30 天)
paths;
algorithms = {'RSA'};
dimension = 20; % (2, 10, 20)
maxFE = 1000; % 1000000
cec2022 = str2func('cec22_test_func');
globalMins = {300, 400, 600, 800, 900, 1800, 2000, 2200, 2300, 2400, 2600, 2700};
experimentNumber = 1; run = 21;
filename = 'result-';
functionsNumber = 12;
global count;
solution = zeros(experimentNumber, functionsNumber, run);
solutionR = zeros(functionsNumber * experimentNumber, run);
for ii = 1 : length(algorithms)
disp(algorithms(ii));
algorithm = str2func(char(algorithms(ii)));
for i = 1 : functionsNumber
disp(i);
for j = 1 : run
[~, bestFitness, ~] = algorithm(cec2022, dimension, maxFE, i);
disp(count);
count = 0;
solution(1, i, j) = bestFitness - globalMins{i};
for k = 1 : experimentNumber
solutionR(k + experimentNumber * (i - 1), j) = solution(k, i, j);
end
end
end
xlswrite(strcat(filename, func2str(algorithm), '-d=', num2str(dimension), '.xlsx'), solutionR, 1);
eD = strcat(func2str(algorithm), '-Bitti :)');
disp(eD);
end
I've tried this code with my friends Winodws Laptop. We both have just dowloaded Matlab so there is no configuration file for both sides. Error is:
Unrecognized function or variable 'cec22_test_func'.
Error in testFunction (line 29)
fitness = feval(fhd, x, fNumber);
Error in RSA (line 25)
Ffun(1,i)=testFunction(X(i,:)', fhd, fNumber);
Error in main (line 21)
[~, bestFitness, ~] = algorithm(cec2022, dimension, maxFE, i);
My friend runs this codes with no issue. I literally have no idea what's happening...
  1 个评论
Batug
Batug 2024-5-13
移动:Steven Lord 2024-5-13
I've just tried this code on Matlab Online too. It's the similar error. Somehow, the code just works on Windows. Not on Apple Silicon or Matlab Online...

请先登录,再进行评论。

采纳的回答

Batug
Batug 2024-5-14
This might seem very easy but I'm not going to delete this question to help others.
Our instructor gave us this repository and it had "cec22_test_func.cpp" and "cec22_test_func.mexw64" in it. I haven't think through it really much but some time later it crossed my mind. It was compiled on Windows as ".mexw64" file so macOS couldn't see it.
mex cec22_test_func
I've compiled it like this, on my macOS and it's working now!

更多回答(1 个)

Steven Lord
Steven Lord 2024-5-13
which cec22_test_func
'cec22_test_func' not found.
There is no such function in MATLAB. This is confirmed by a search of the MathWorks website, which only finds this Answers thread.
What you've written likely works on your friend's machine because they've created that function or downloaded it from somewhere.
A quick Google search found a GitHub repo with a function by that name, but that function is implemented as a MEX-file (which is platform dependent) and the repo only has versions of the MEX-file for Microsoft Windows (the .mexw64 extension.) You could try compiling the MEX-file yourself on your Mac machine.
  2 个评论
Batug
Batug 2024-5-14
I forgot to mension that. I already have that in my directory. We both cloned the same repository that our instructors gave.
Batug
Batug 2024-5-14
I've solved the issue and closed the question. Thanks for your help!

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Startup and Shutdown 的更多信息

产品


版本

R2024a

Community Treasure Hunt

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

Start Hunting!

Translated by