How to create a structure array without removing prior data?

2 visualizaciones (últimos 30 días)
Mansoor ahmadi
Mansoor ahmadi el 5 de En. de 2015
Editada: Stephen23 el 11 de En. de 2015
Hello! I have an interface in matlab. I get the image and features of the image (name, last name, and ID) from the interface. Then I put it in the structure array, and then I save it in a mat file called "Database" by the "save" function. When I add another data (structure) to the structure array, the old data is removed from array. This is my code:
name=get(handles.edit2, 'string');
lastname= get(handles.edit3, 'string');
id= get(handles.edit4, 'string');
feature = handles.a;
feature1 = handles.phi;
array(3).amplitud=A;
array(3).angle=Phi;
array(3).name=name;
array(3).lastname=lastname;
array(3).ID=id;
save('Database','array');
I have put this code in the pushbutton_callback.
Thank you.
Mansoor

Respuestas (2)

Stephen23
Stephen23 el 5 de En. de 2015
Editada: Stephen23 el 5 de En. de 2015
Try using the '-append' option:
save(filename,variables,'-append')
More information can be found in the save documentation.
  3 comentarios
Mansoor ahmadi
Mansoor ahmadi el 5 de En. de 2015
when i insert the data by command window it work good, but it dose not work in my interface.
Stephen23
Stephen23 el 8 de En. de 2015
What does not work? How does it not work? Do you get any messages or outputs?

Iniciar sesión para comentar.


Image Analyst
Image Analyst el 5 de En. de 2015
Put a breakpoint right before you assign the first field to array(3). Check the values of the first and second structures by putting these lines in
array(1)
array(2)
Now do the lines where you assign fields to array(3).
array(3).amplitud=A;
array(3).angle=Phi;
array(3).name=name;
array(3).lastname=lastname;
array(3).ID=id;
Now put these lines again
array(1)
array(2)
whos array
The values for array(1) and array(2) should not vanish. You should not lose those structures. If they do, there's something you're not telling us, like you have a "clear" in there somewhere, or you're not incrementing the index correctly (like it's not really 3 but some variable instead).
  6 comentarios
Mansoor ahmadi
Mansoor ahmadi el 11 de En. de 2015
thanks Analyst!
Sir, when I store like this:
array(1).data=10; array(2).data=11; array(3).data=12; array(4).data=13; array(5).data=14;
when I want to access the "array(2).data or array(3).data" it dose not give me that's value(11 or 12); But I can access just the last value or "array(5).data"
thank you.
Answer me please.
Stephen23
Stephen23 el 11 de En. de 2015
Editada: Stephen23 el 11 de En. de 2015
Using exactly the code from your comment above I can access any of the data values:
>> array(1).data=10; array(2).data=11; array(3).data=12; array(4).data=13; array(5).data=14;
>> array(2).data
ans =
11
>> array(3).data
ans =
12
This means there is something that your code is doing that you are not telling us about.
Also note that you can generate this structure in a neater way:
array = struct('data',num2cell(10:14));

Iniciar sesión para comentar.

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by