Import data from file inside "classdef properties"

Hi all,
I'd like to understand how to do something that i find really intriguing.
I'm talking about importing data from an external file (Excel) and then assigning specific fields' values (from that file) to the variables defined within the "properties" of a "classdef" in my code. These variables are useful in different parts of the code, so that if I change the external file I can change the properties mentioned, which are automatically called inside the code itself.
I've already defined the parser for the external file, but I do not know how to integrate it into the classdef.
Your help would be greatly appreciated.
Thanks!

5 Kommentare

Jeff Miller
Jeff Miller am 13 Mär. 2024
Call your parser from the constructor when you create an object of the class? Maybe pass the file name to the constructor as an argument so that different objects will have properties taken from different Excel files...
It depends: is it necessary that you be able to change the file while there are existing objects of the class? (If so then should the new properties affect the existing objects ?)
slow_hand
slow_hand am 13 Mär. 2024
For Jeff: I'm trying to parse the file outside of the classdef and then pass the file to it, but it still gives me errors ...
For Walter: Ideally, each time I run the code I need to extract data from the Excel and then change the properties in the classdef...but I do not know how...
Steven Lord
Steven Lord am 13 Mär. 2024
Ideally, each time I run the code
What do you mean by "the code"?
  • The class constructor?
  • Each class method?
  • Each file that accesses a property of the object?
What's the purpose of these properties? How do they get used in your workflow? Knowing a little more about your planned usage may help understand if there's an alternate approach that may be more efficient than your current planned approach. This may help avoid the XY problem.
slow_hand
slow_hand am 15 Mär. 2024
To Steven: For "code" I mean exactly each file that accesses a property of the object.
For now, in the classdef, I've defined a function in methods that parses the Excel file and extracts certain properties/value/fields.
Then, in the properties section of the class, I recall these properties by writing:
propertyName = classdefName.functionName.propertyName
Where propertyName is the property extracted from the Excel, classdefName is the name assigned to the classdef and functionName is the function mentioned before.
It seems to work, however do you think it is a valid approach??
Thanks.

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

SAI SRUJAN
SAI SRUJAN am 28 Mär. 2024
Hi,
I understand that you are facing an issue with importing data from a file to inside of 'classdef properties'.
This can be done by using the class constructor or a dedicated method to load the data when an instance of the class is created or when needed.
Below is an example of how you might structure your class to include importing data from an Excel file and assigning specific fields' values to the class properties.
classdef MyClass
properties
Property1
Property2
end
methods
function obj = MyClass(excelFilePath)
if nargin > 0
obj = obj.loadExcelData(excelFilePath);
end
end
function obj = loadExcelData(obj, excelFilePath)
data = readtable(excelFilePath);
obj.Property1 = data.Field1;
obj.Property2 = data.Field2;
end
end
end
I hope this helps!

1 Kommentar

slow_hand
slow_hand am 30 Mär. 2024
Thank you SAI, this is exactly what I was meaning in my answer above!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Data Type Identification finden Sie in Hilfe-Center und File Exchange

Produkte

Gefragt:

am 12 Mär. 2024

Kommentiert:

am 30 Mär. 2024

Community Treasure Hunt

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

Start Hunting!

Translated by