MATLAB Answers

Add a new item to existing list and save it and Dot indexing is not supported for variables of this type

1 view (last 30 days)
Khalala Mamouri
Khalala Mamouri on 30 Aug 2020
Edited: Khalala Mamouri on 31 Aug 2020
Hi,
I am developping an app for EV's. i am looking for a way to allow the future users to add new vehicles to the drop down menu. To do this, i need a code to modify the existing item list, and add new EVs referances. I found this code, i modified a bit and it somehow works
However ! when i close the app the name desepears, and i have to start again. What i am i missing ?, and how to make the code saves the new car, in the existing database without deleting it after restart
thank you
new_car = "WhatEver";
app.VehicleModelDropDown.Items = [app.VehicleModelDropDown.Items new_car];

  0 Comments

Sign in to comment.

Answers (1)

Mohammad Sami
Mohammad Sami on 31 Aug 2020
You need to load and save Items from a .mat file if you wish your changes to be persisted across runs. Otherwise the items will always initialise to the values you have coded in your app.

  3 Comments

Mohammad Sami
Mohammad Sami on 31 Aug 2020
Add a startupFcn to your app. This can be done by going into the code view and clicking App Input Arguments.
It will open a dialog, type "varargin" and click ok. It will create the startupFcn.
% Code that executes after component creation
function startupFcn(app, varargin)
list = load('VehicleList.mat');
app.VehicleModelDropDown.Items = list.VehicleList;
end
function UpdateVehicleList(app,new_car)
VehicleList = [app.VehicleModelDropDown.Items new_car];
save('VehicleList.mat','VehicleList','-append');
app.VehicleModelDropDown.Items = VehicleList;
end
Khalala Mamouri
Khalala Mamouri on 31 Aug 2020
Hi mohammad thanks for the fast replay and code.
Unfortunately i run in some problems using the load function so a changed a bit the code, but still the same idea as yours. So i am using "fopen" instead of "load" and a .m file unstead of .mat. As i said i think the principal is the same for both, how ever, when i start simulation i get this error :
" Dot indexing is not supported for variables of this type "
The code i am using is given bellow.
function startupFcn(app, varargin)
evalin('base', 'clear all')
evalin('base', 'clc')
list = fopen('VehicleList.m','r'); % Read data from the file
A = textscan(list, '%c'); % Importing data
fclose(list); % close file
AB = char(A); % Cell to char conversion
assignin('base','A', A); % send to workspace
assignin('base','AB', AB); % send to workspace
app.VehicleModelDropDown.Items = AB.VehicleList; % << I get the error here
function UpdateVehicleList(app,new_car)
VehicleList = [app.VehicleModelDropDown.Items new_car];
save('VehicleList.m','VehicleList','-append');
app.VehicleModelDropDown.Items = VehicleList;
end
end
Thanks for your time ;)

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!