重塑MATLAB矩陣,這樣我基本上可以做到這一點在我上一個MATLAB代碼工作的一種特殊的方式
要accomlish的是,我的代碼看起來像這樣
A = [1:30]'; % Example matrix
rows = 3;
for i=1:(numel(A)-rows+1)
B(1:rows,i)=A(i:i+rows-1,1);
end
燦有人幫助我以更簡單的方式做同樣的事情?我猜測有一條單線命令可以解決這個問題(也許我錯了)。
重塑MATLAB矩陣,這樣我基本上可以做到這一點在我上一個MATLAB代碼工作的一種特殊的方式
要accomlish的是,我的代碼看起來像這樣
A = [1:30]'; % Example matrix
rows = 3;
for i=1:(numel(A)-rows+1)
B(1:rows,i)=A(i:i+rows-1,1);
end
燦有人幫助我以更簡單的方式做同樣的事情?我猜測有一條單線命令可以解決這個問題(也許我錯了)。
讓A
和rows
被定義爲在你的代碼中。我假設A
中的值僅僅是一個例子。如果他們總是1
,2
,...,下面的一些解決方案可以簡化。
A = [1:30].';
rows = 3;
這裏有一些方法:
我的選擇:
B = A(bsxfun(@plus, (1:rows).', 0:numel(A)-rows));
一種替代方案:
B = conv2(A.', flip(eye(rows)));
B = B(:, rows:end-rows+1);
略多於低效:
B = hankel(A);
B = B(1:rows, 1:numel(A)-rows+1);
如果您有圖像處理工具箱:
B = im2col(A, [rows 1], 'sliding');
你有圖像處理工具箱? –
嗨路易斯,我做但我必須說我不希望使用任何工具箱。 – bru1987