matlab适用的问题

matlab适用的问题,matlab,Matlab,让我问一下,使用Matlab解决我的特定问题是胡说八道还是有人做了类似的事情 我有一个初始序列S(1),其中每个术语都是一个2D点。 我通过插入一个新的术语点p 在每个连续的2个术语点之间p(i)和p(i+1)。 其中p是S(2)上最近索引的4个术语点的函数f。 即 函数f是用类似C的风格编写的 但不是纯粹的矩阵语言风格。 同样,我重复生成新的更长序列S(I+1)直到S(m) 上述内容对您来说可能不明确,但请给出一些建议。 我不是问Matlab是否是解决这个问题的最佳选择,而是问是否没有专家会使

让我问一下,使用Matlab解决我的特定问题是胡说八道还是有人做了类似的事情

我有一个初始序列
S(1)
,其中每个术语都是一个2D点。 我通过插入一个新的术语点
p
在每个连续的2个术语点之间
p(i)
p(i+1)
。 其中
p
S(2)
上最近索引的4个术语点的函数
f
。 即

函数
f
是用类似C的风格编写的 但不是纯粹的矩阵语言风格。 同样,我重复生成新的更长序列
S(I+1)
直到
S(m)

上述内容对您来说可能不明确,但请给出一些建议。 我不是问Matlab是否是解决这个问题的最佳选择,而是问是否没有专家会使用Matlab解决这样的问题,或者有人会这样做


提前谢谢。

是的,Matlab似乎适合这样的任务。对于序列列表的数据结构,请考虑使用。您可以将
S
作为单元数组,并且
S{1}
将对应于您的
S(1)
,并且也可以是点的单元数组,或者如果点只是数的对或三元组,则可以是通常的矩阵


另一种选择是,在我看来,Python在处理所有类型的序列时尤其强大。

它严重依赖于
f
。如果
f
可以在Matlab中高效地进行编码,或者您愿意花时间对其进行MEX(MatlabC扩展),那么Matlab将高效地执行

代码可以像这样矢量化:

f = @(x) mean(x,3);
m=3;
S{1}=[1,2,3;4,5,6];
for i=2:m
    S{i} = cat(3,...
        [[0;0] S{i-1}(:,1:end-2)],...
        S{i-1}(:,1:end-1),...
        S{i-1}(:,2:end),...
        [S{i-1}(:,3:end) [0;0]]);
    S{i} = [f(S{i}) [0;0]];
    S{i} = cat(3,S{i-1},S{i});
    S{i} = permute(S{i},[1 3 2]);
    S{i} = S{i}(:,:);
    S{i}(:,end)=[];
end
f = @(x) mean(x,3);
m=3;
S{1}=[1,2,3;4,5,6];
for i=2:m
    S{i} = cat(3,...
        [[0;0] S{i-1}(:,1:end-2)],...
        S{i-1}(:,1:end-1),...
        S{i-1}(:,2:end),...
        [S{i-1}(:,3:end) [0;0]]);
    S{i} = [f(S{i}) [0;0]];
    S{i} = cat(3,S{i-1},S{i});
    S{i} = permute(S{i},[1 3 2]);
    S{i} = S{i}(:,:);
    S{i}(:,end)=[];
end