如何在 Matlab 中使用其他结构的一部分创建结构?
How to create a struct in Matlab with parts of anothers structs?
我在 Matlab 中有几个不同维度的结构。让我们假设他们是 5 个,第一个是 1x100
,第二个 1x250
,第三个 1x200
,第四个 1x100
,第五个 1x150
。我想 assemble 一个只包含每个先前结构的最后一个元素的新结构,也就是说,我想得到一个 1x5
形式的结构。我该怎么做?
创建 5 个行向量,然后从最后一个元素创建一个行向量,如下所示:
>> a=[1:100];
>> b=[1:250];
>> c=[1:200];
>> d=[1:100];
>> e=[1:150];
>> the_lasts = [a(end), b(end), c(end), d(end), e(end)]
sthe_last =
100 250 200 100 150
>>
这也可以概括为一个函数,使用名为的文件:
ends_of.m :
function lasts = ends_of (varargin)
% prepare a result row vector with nargin dimention
lasts = zeros(1,nargin);
for i = 1:nargin
element = varargin(i); % get the arg
last = element{}(end); % find the last element
lasts(i) = last; % save it as index i
endfor
endfunction
那么可以这样调用:
>> ends_of ([1,2,3],[4,5,6],[1:44], [3:33], [1,2,3,2,1])
ans =
3 6 44 33 1
>>
我在 Matlab 中有几个不同维度的结构。让我们假设他们是 5 个,第一个是 1x100
,第二个 1x250
,第三个 1x200
,第四个 1x100
,第五个 1x150
。我想 assemble 一个只包含每个先前结构的最后一个元素的新结构,也就是说,我想得到一个 1x5
形式的结构。我该怎么做?
创建 5 个行向量,然后从最后一个元素创建一个行向量,如下所示:
>> a=[1:100];
>> b=[1:250];
>> c=[1:200];
>> d=[1:100];
>> e=[1:150];
>> the_lasts = [a(end), b(end), c(end), d(end), e(end)]
sthe_last =
100 250 200 100 150
>>
这也可以概括为一个函数,使用名为的文件:
ends_of.m :
function lasts = ends_of (varargin)
% prepare a result row vector with nargin dimention
lasts = zeros(1,nargin);
for i = 1:nargin
element = varargin(i); % get the arg
last = element{}(end); % find the last element
lasts(i) = last; % save it as index i
endfor
endfunction
那么可以这样调用:
>> ends_of ([1,2,3],[4,5,6],[1:44], [3:33], [1,2,3,2,1])
ans =
3 6 44 33 1
>>