When should you use map containers in Matlab? [duplicate]
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
This question already has an answer here:
The difference between a container map and a struct in matlab
3 answers
Using Maps
like in the example on MathWorks (see below) seem useful on first sight. But on second thought, they're a container structure, just as Matlab's struct
variable types. I'm new to Maps
and missing the advantage of when to use them as opposed to structs
- to break the question down into some measurable parameters: In what some use-cases is using Maps
vs structs
faster and uses less lines of code?
from MathWorks docs, example:
months = {'Jan','Feb','Mar','Apr'};
rainfall = [327.2 368.2 197.6 178.4];
M = containers.Map(months,rainfall)
vs something similar with structs
months = {'Jan','Feb','Mar','Apr'};
rainfall = [327.2 368.2 197.6 178.4];
for ind=1:numel(months)
s.(months{ind})=rainfall(ind);
end
matlab
marked as duplicate by Cris Luengo, UnbearableLightness, Luis Mendo
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 26 '18 at 16:58
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
add a comment |
This question already has an answer here:
The difference between a container map and a struct in matlab
3 answers
Using Maps
like in the example on MathWorks (see below) seem useful on first sight. But on second thought, they're a container structure, just as Matlab's struct
variable types. I'm new to Maps
and missing the advantage of when to use them as opposed to structs
- to break the question down into some measurable parameters: In what some use-cases is using Maps
vs structs
faster and uses less lines of code?
from MathWorks docs, example:
months = {'Jan','Feb','Mar','Apr'};
rainfall = [327.2 368.2 197.6 178.4];
M = containers.Map(months,rainfall)
vs something similar with structs
months = {'Jan','Feb','Mar','Apr'};
rainfall = [327.2 368.2 197.6 178.4];
for ind=1:numel(months)
s.(months{ind})=rainfall(ind);
end
matlab
marked as duplicate by Cris Luengo, UnbearableLightness, Luis Mendo
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 26 '18 at 16:58
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
2
This (interesting) question seems to be a duplicate of this one. Is it?
– Luis Mendo
Nov 26 '18 at 14:24
1
That second answer there has good info on differences. This Q asks for use cases whereMap
is better. I think the answer would be in any case where the difference withstruct
is relevant.
– Cris Luengo
Nov 26 '18 at 15:01
indeed absolute duplicate, I missed it, please close, thanks for being kind about this
– user2305193
Nov 26 '18 at 15:23
add a comment |
This question already has an answer here:
The difference between a container map and a struct in matlab
3 answers
Using Maps
like in the example on MathWorks (see below) seem useful on first sight. But on second thought, they're a container structure, just as Matlab's struct
variable types. I'm new to Maps
and missing the advantage of when to use them as opposed to structs
- to break the question down into some measurable parameters: In what some use-cases is using Maps
vs structs
faster and uses less lines of code?
from MathWorks docs, example:
months = {'Jan','Feb','Mar','Apr'};
rainfall = [327.2 368.2 197.6 178.4];
M = containers.Map(months,rainfall)
vs something similar with structs
months = {'Jan','Feb','Mar','Apr'};
rainfall = [327.2 368.2 197.6 178.4];
for ind=1:numel(months)
s.(months{ind})=rainfall(ind);
end
matlab
This question already has an answer here:
The difference between a container map and a struct in matlab
3 answers
Using Maps
like in the example on MathWorks (see below) seem useful on first sight. But on second thought, they're a container structure, just as Matlab's struct
variable types. I'm new to Maps
and missing the advantage of when to use them as opposed to structs
- to break the question down into some measurable parameters: In what some use-cases is using Maps
vs structs
faster and uses less lines of code?
from MathWorks docs, example:
months = {'Jan','Feb','Mar','Apr'};
rainfall = [327.2 368.2 197.6 178.4];
M = containers.Map(months,rainfall)
vs something similar with structs
months = {'Jan','Feb','Mar','Apr'};
rainfall = [327.2 368.2 197.6 178.4];
for ind=1:numel(months)
s.(months{ind})=rainfall(ind);
end
This question already has an answer here:
The difference between a container map and a struct in matlab
3 answers
matlab
matlab
asked Nov 26 '18 at 13:35
user2305193user2305193
868623
868623
marked as duplicate by Cris Luengo, UnbearableLightness, Luis Mendo
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 26 '18 at 16:58
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
marked as duplicate by Cris Luengo, UnbearableLightness, Luis Mendo
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 26 '18 at 16:58
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
2
This (interesting) question seems to be a duplicate of this one. Is it?
– Luis Mendo
Nov 26 '18 at 14:24
1
That second answer there has good info on differences. This Q asks for use cases whereMap
is better. I think the answer would be in any case where the difference withstruct
is relevant.
– Cris Luengo
Nov 26 '18 at 15:01
indeed absolute duplicate, I missed it, please close, thanks for being kind about this
– user2305193
Nov 26 '18 at 15:23
add a comment |
2
This (interesting) question seems to be a duplicate of this one. Is it?
– Luis Mendo
Nov 26 '18 at 14:24
1
That second answer there has good info on differences. This Q asks for use cases whereMap
is better. I think the answer would be in any case where the difference withstruct
is relevant.
– Cris Luengo
Nov 26 '18 at 15:01
indeed absolute duplicate, I missed it, please close, thanks for being kind about this
– user2305193
Nov 26 '18 at 15:23
2
2
This (interesting) question seems to be a duplicate of this one. Is it?
– Luis Mendo
Nov 26 '18 at 14:24
This (interesting) question seems to be a duplicate of this one. Is it?
– Luis Mendo
Nov 26 '18 at 14:24
1
1
That second answer there has good info on differences. This Q asks for use cases where
Map
is better. I think the answer would be in any case where the difference with struct
is relevant.– Cris Luengo
Nov 26 '18 at 15:01
That second answer there has good info on differences. This Q asks for use cases where
Map
is better. I think the answer would be in any case where the difference with struct
is relevant.– Cris Luengo
Nov 26 '18 at 15:01
indeed absolute duplicate, I missed it, please close, thanks for being kind about this
– user2305193
Nov 26 '18 at 15:23
indeed absolute duplicate, I missed it, please close, thanks for being kind about this
– user2305193
Nov 26 '18 at 15:23
add a comment |
1 Answer
1
active
oldest
votes
A container map is more or less an struct with a customized indexing. You can use them, when you prefer referring to an entry by a certain char
for instance rather than an index. Let's say you want to recall the value of the rainfall for march.
%Declaration map, as you wrote
months = {'Jan','Feb','Mar','Apr'};
rainfall = [327.2 368.2 197.6 178.4];
M = containers.Map(months,rainfall);
M('Mar') % 197.6
As you see, you not just save a variable, but the reference (as a char, not in the typical way...) as well. For large amounts of data you shouldn'd use maps. Hence I'd recommend you to use maps when you specifically need char
references and structs for the rest.
the map is (...) a dictionary, a mapping x --> y without any restrictions on x and y. A struct is a data structure, a way to save data in a logical way. - @hbaderts
Just to remind, if you can use a vector instead of a struct, definitely do so!
You will find other valuable informations about maps at this question.
2
You can create astuct
that does exactly the same as the map in this answer. You'd index asM.('Mar')
. Astruct
in MATLAB is also dictionary. The difference is that keys in astruct
must be valid variable names, whereas keys in aMap
can be anything, including numeric arrays. Other differences are less important, IMO. This answer to the question you linked discusses the differences correctly.
– Cris Luengo
Nov 26 '18 at 17:18
I agree with Cris on this... thanks for the effort though
– user2305193
Nov 26 '18 at 17:46
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
A container map is more or less an struct with a customized indexing. You can use them, when you prefer referring to an entry by a certain char
for instance rather than an index. Let's say you want to recall the value of the rainfall for march.
%Declaration map, as you wrote
months = {'Jan','Feb','Mar','Apr'};
rainfall = [327.2 368.2 197.6 178.4];
M = containers.Map(months,rainfall);
M('Mar') % 197.6
As you see, you not just save a variable, but the reference (as a char, not in the typical way...) as well. For large amounts of data you shouldn'd use maps. Hence I'd recommend you to use maps when you specifically need char
references and structs for the rest.
the map is (...) a dictionary, a mapping x --> y without any restrictions on x and y. A struct is a data structure, a way to save data in a logical way. - @hbaderts
Just to remind, if you can use a vector instead of a struct, definitely do so!
You will find other valuable informations about maps at this question.
2
You can create astuct
that does exactly the same as the map in this answer. You'd index asM.('Mar')
. Astruct
in MATLAB is also dictionary. The difference is that keys in astruct
must be valid variable names, whereas keys in aMap
can be anything, including numeric arrays. Other differences are less important, IMO. This answer to the question you linked discusses the differences correctly.
– Cris Luengo
Nov 26 '18 at 17:18
I agree with Cris on this... thanks for the effort though
– user2305193
Nov 26 '18 at 17:46
add a comment |
A container map is more or less an struct with a customized indexing. You can use them, when you prefer referring to an entry by a certain char
for instance rather than an index. Let's say you want to recall the value of the rainfall for march.
%Declaration map, as you wrote
months = {'Jan','Feb','Mar','Apr'};
rainfall = [327.2 368.2 197.6 178.4];
M = containers.Map(months,rainfall);
M('Mar') % 197.6
As you see, you not just save a variable, but the reference (as a char, not in the typical way...) as well. For large amounts of data you shouldn'd use maps. Hence I'd recommend you to use maps when you specifically need char
references and structs for the rest.
the map is (...) a dictionary, a mapping x --> y without any restrictions on x and y. A struct is a data structure, a way to save data in a logical way. - @hbaderts
Just to remind, if you can use a vector instead of a struct, definitely do so!
You will find other valuable informations about maps at this question.
2
You can create astuct
that does exactly the same as the map in this answer. You'd index asM.('Mar')
. Astruct
in MATLAB is also dictionary. The difference is that keys in astruct
must be valid variable names, whereas keys in aMap
can be anything, including numeric arrays. Other differences are less important, IMO. This answer to the question you linked discusses the differences correctly.
– Cris Luengo
Nov 26 '18 at 17:18
I agree with Cris on this... thanks for the effort though
– user2305193
Nov 26 '18 at 17:46
add a comment |
A container map is more or less an struct with a customized indexing. You can use them, when you prefer referring to an entry by a certain char
for instance rather than an index. Let's say you want to recall the value of the rainfall for march.
%Declaration map, as you wrote
months = {'Jan','Feb','Mar','Apr'};
rainfall = [327.2 368.2 197.6 178.4];
M = containers.Map(months,rainfall);
M('Mar') % 197.6
As you see, you not just save a variable, but the reference (as a char, not in the typical way...) as well. For large amounts of data you shouldn'd use maps. Hence I'd recommend you to use maps when you specifically need char
references and structs for the rest.
the map is (...) a dictionary, a mapping x --> y without any restrictions on x and y. A struct is a data structure, a way to save data in a logical way. - @hbaderts
Just to remind, if you can use a vector instead of a struct, definitely do so!
You will find other valuable informations about maps at this question.
A container map is more or less an struct with a customized indexing. You can use them, when you prefer referring to an entry by a certain char
for instance rather than an index. Let's say you want to recall the value of the rainfall for march.
%Declaration map, as you wrote
months = {'Jan','Feb','Mar','Apr'};
rainfall = [327.2 368.2 197.6 178.4];
M = containers.Map(months,rainfall);
M('Mar') % 197.6
As you see, you not just save a variable, but the reference (as a char, not in the typical way...) as well. For large amounts of data you shouldn'd use maps. Hence I'd recommend you to use maps when you specifically need char
references and structs for the rest.
the map is (...) a dictionary, a mapping x --> y without any restrictions on x and y. A struct is a data structure, a way to save data in a logical way. - @hbaderts
Just to remind, if you can use a vector instead of a struct, definitely do so!
You will find other valuable informations about maps at this question.
answered Nov 26 '18 at 15:03
Pablo JekenPablo Jeken
484116
484116
2
You can create astuct
that does exactly the same as the map in this answer. You'd index asM.('Mar')
. Astruct
in MATLAB is also dictionary. The difference is that keys in astruct
must be valid variable names, whereas keys in aMap
can be anything, including numeric arrays. Other differences are less important, IMO. This answer to the question you linked discusses the differences correctly.
– Cris Luengo
Nov 26 '18 at 17:18
I agree with Cris on this... thanks for the effort though
– user2305193
Nov 26 '18 at 17:46
add a comment |
2
You can create astuct
that does exactly the same as the map in this answer. You'd index asM.('Mar')
. Astruct
in MATLAB is also dictionary. The difference is that keys in astruct
must be valid variable names, whereas keys in aMap
can be anything, including numeric arrays. Other differences are less important, IMO. This answer to the question you linked discusses the differences correctly.
– Cris Luengo
Nov 26 '18 at 17:18
I agree with Cris on this... thanks for the effort though
– user2305193
Nov 26 '18 at 17:46
2
2
You can create a
stuct
that does exactly the same as the map in this answer. You'd index as M.('Mar')
. A struct
in MATLAB is also dictionary. The difference is that keys in a struct
must be valid variable names, whereas keys in a Map
can be anything, including numeric arrays. Other differences are less important, IMO. This answer to the question you linked discusses the differences correctly.– Cris Luengo
Nov 26 '18 at 17:18
You can create a
stuct
that does exactly the same as the map in this answer. You'd index as M.('Mar')
. A struct
in MATLAB is also dictionary. The difference is that keys in a struct
must be valid variable names, whereas keys in a Map
can be anything, including numeric arrays. Other differences are less important, IMO. This answer to the question you linked discusses the differences correctly.– Cris Luengo
Nov 26 '18 at 17:18
I agree with Cris on this... thanks for the effort though
– user2305193
Nov 26 '18 at 17:46
I agree with Cris on this... thanks for the effort though
– user2305193
Nov 26 '18 at 17:46
add a comment |
2
This (interesting) question seems to be a duplicate of this one. Is it?
– Luis Mendo
Nov 26 '18 at 14:24
1
That second answer there has good info on differences. This Q asks for use cases where
Map
is better. I think the answer would be in any case where the difference withstruct
is relevant.– Cris Luengo
Nov 26 '18 at 15:01
indeed absolute duplicate, I missed it, please close, thanks for being kind about this
– user2305193
Nov 26 '18 at 15:23