我已经写了一个代码,代码如下:
r=16;
n=10;
w=[3 5]
R2=n;
R3=floor(r/w(2))*w(2);
R4=floor(r/w(3))*w(3);
[A2,padded]=vec2mat(vec(1:R2),w(1));
[A3,padded]=vec2mat(vec(R2+1:R2+R3),w(2));
我需要为A100
. _for loop.
for loop
A
A2 - A10
Matlab 专家需要您的帮助。
我已经写了一个代码,代码如下:
r=16;
n=10;
w=[3 5]
R2=n;
R3=floor(r/w(2))*w(2);
R4=floor(r/w(3))*w(3);
[A2,padded]=vec2mat(vec(1:R2),w(1));
[A3,padded]=vec2mat(vec(R2+1:R2+R3),w(2));
我需要为A100
. _for loop.
for loop
A
A2 - A10
Matlab 专家需要您的帮助。
你不应该把你的东西放在单独的变量中,而应该放在 MATLAB 中称为“单元数组”的数据结构中。如果这些值都是标量值,您甚至可以使用“普通”数组,也就是矩阵。
所以为了准备,你做
R=56;
N=51;
W=[3 5 6 8 13 17 25 25 51];
R2=N; %//why that? are you sure?
RR = floor(R./W).*W;
%// So if you need this exception:
RR(1) = N;
%// or not, is up to you.
rows = cumsum(RR./W);
%//Now, whatever vec2mat returns, could be more than a simple scalar, so for AA we use
%//a cell array.
AA = repmat({[]}, 1, length(W));
offset=0;
for x=1:length(W)
increment=RR(i)
[AA{x},padded]=vec2mat(vec(offset+1:offset+increment),W(x));
offset = offset+increment;
end
%%// Your AA values are now as well shifted by 1, so AA{1} is your old A2, and so on.
编辑:
按照Dan 的建议查找RR
和row
使用矢量化。但我不认为创作可以很好地矢量化。AA
编辑2:
我刚刚将 Dan 的解决方案包含在我的解决方案中。它可能会为较大的值带来巨大的性能提升length(W)
。
编辑 3:
我的旧问题代码应该让您了解这些概念;您可以尝试自己为新零件实施它们。当你没有成功时,你可以询问究竟是什么不起作用。