Matlab 取结构体中某一特定字段的所有值

1、函数

% get the field value from sta
function data=get_fdata(sta,field)
data=[];
af=fieldnames(sta);
n=length(af);
for i=1:n
    if mstrcmp(af{i},field)==0
        break;
    end
end
if (mstrcmp(af{i},field)~=0)
    disp('----error----');
    disp(['The filed ''',field,''' is not in sta!']);
    disp('------end----');
    return;
end
m=length(sta);
for i=1:m
    data=eval(['[data;sta(i).',field,'];']);
end
end

2、两行代码

数字:

a={sta.lon};
a=cell2mat(a)';
%a=[sta.lon]';%这行与上面两行效果相同

长度一致的字符数组:

a={sta.name};
a=cell2mat(a)';

这种最后得到的字符矩阵每行只有一个字符,不符合预期,建议采用上面的函数或者采用一个for循环:

% cell mat 2 str mat
function data=cellm2strm(cemat)
n=length(cemat);
data=[];
for i=1:n
    data=[data;cemat{i}];
end
end

注意:要求字符长度一致!!

你可能感兴趣的:(#,Matlab,matlab)