.m file with ifdef (ifdef 기능을 활용한 .m파일 구성)

6 views (last 30 days)
성욱
성욱 on 27 Jul 2023
Edited: Ayush on 3 Aug 2023
Sorry, I fixed my Question "Stateflow(x) --> Other C file(*.c)
Hello! I want some help.
I'm making a model and using 'Code Generation' in C language.
And I'm managing my model's variable in .m file!
I want to use ifdef, like C code, to manage two value with one variable in .m file.
example)
ifdef a
length1 = 30;
else
length1 = 40;
endif
And that 'a' is comming from other .c file.
I want to set the 'a' with my hand code.(.c) according to the situation.
If it possible, how can I make it?
thank you!
안녕하세요.
혹시 .m 파일에 c 코드의 ifdef 함수와 같은 기능을 써서 한 개의 파라미터를 조건에 따라 값을 변경하여 쓰고 싶은데
이게 가능한 것인지 궁금합니다. (예제는 위의 example)과 같습니다.)
ifdef에 대한 조건 값(a)는 같은 프로젝트의 다른 .c 파일에서 정의해주었으면 합니다.
커뮤니티 질문글에 관련 정보를 찾을 수 없어 글을 남깁니다....
감사합니다.
  3 Comments
성욱
성욱 on 27 Jul 2023
Ok
I made a model in Stateflow and generate it in C code.
And this model is used in various project, but the parameter is a little bit different.
So, I figure out that if I make a .m file like this,(down below) It could be more easier.
(Oh..... I wrote upper example with mistake.... I should write #ifdef #endif....)
#ifdef (project_name)
length1 = 30;
length2 = 10;
#endif
#ifdef (project_name)
length1 = 40;
length2 = 20;
#endif
Because, I can make a .c file which defines (project_name) on it.
than just bring that variable into .m file.
As a result, the parameter would be set according to the Project.
My Question is how can I bring the (project_name) into my .m file.
(Sorry, I have nothing to do with Simulink)
Angelo Yeo
Angelo Yeo on 27 Jul 2023
Do you want to get the name of current project? Like the one below?
How do you define your "project'?

Sign in to comment.

Answers (1)

Ayush
Ayush on 3 Aug 2023
Edited: Ayush on 3 Aug 2023
Hi 성욱,
In MATLAB, you can use conditional statements like `if-else` to achieve similar functionality to `#ifdef` in C. However, you cannot directly define a variable in an `.m` file based on a condition set in another `.c` file.
If you want to set the value of a variable in MATLAB based on a condition set in a C file, you can try out the below mentioned options:
1. Pass the value from the C file to MATLAB: You can use MATLAB's External Interfaces to call C functions from MATLAB. In your C code, you can set the value of `a` and pass it to MATLAB as a function argument.
2. Use a configuration file: Instead of directly setting the value in the C file, you can create a configuration file (e.g., a text file) that contains the value of `a`. Then, in your MATLAB code, you can read the configuration file and set the value of `length1` accordingly.
Here's an example of how you can achieve this using a configuration file:
C code (config.txt):
a = 2;
MATLAB code
% Read the configuration file
configFile = 'config.txt';
fileID = fopen(configFile, 'r');
C = textscan(fileID, '%s %d', 'Delimiter', '=');
fclose(fileID);
% Get the value of 'a' from the configuration file
a = C{2};
% Set the value of 'length1' based on 'a'
if a == 1
length1 = 30;
else
length1 = 40;
end
Remember to update the `config.txt` file manually according to the situation before running the MATLAB code.

Products


Release

R2023a

Community Treasure Hunt

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

Start Hunting!