Load specific column from mat file

27 visualizzazioni (ultimi 30 giorni)
Lucas Maiß
Lucas Maiß il 20 Nov 2017
Commentato: Jan il 20 Nov 2017
Hello, I got a mat file with a struct of different variables. Each variable got a 1X5 struct entry. MAT File:
a = [0 0 0 0 1]
b = [0 0 0 1 0]
c = [0 1 0 0 1]
My simulink model got different variants and each column of the matfile belongs to a variant. So I would like to load that mat file with only one column. Workspace:
a = 1
b = 0
c = 1
Is that possible? Greetings Lucas

Risposte (2)

KSSV
KSSV il 20 Nov 2017
a = a(end) ;
b = b(end) ;
c = c(end) ;

Jan
Jan il 20 Nov 2017
This is not possible in one command, but with a tiny function:
function [a,b,c] = LoadColumn(FileName, col)
Data = load(FileName);
a = Data.a(col);
b = Data.b(col);
c = Data.c(col);
end
This might look trivial - in fact, it is. Does it solve your needs? If not, what is the remaining problem?
  4 Commenti
Lucas Maiß
Lucas Maiß il 20 Nov 2017
That look good. Could you explain me what you are doing here: @(v)v(end)
Jan
Jan il 20 Nov 2017
@Lucas: @(v)v(end) is an anonymous function, which replies the last element of the input.
With a loop:
function S = LoadColumn(FileName, col)
S = load(FileName);
Field = fieldnames(S);
for iField = 1:numel(Field)
F = Field{iField};
S.(F) = S.(F)(end);
end
end

Accedi per commentare.

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by