0
我有一個512位的數據,我想分成16等份,每個32位。我怎樣才能在MATLAB中使用for
循環?如何使用for循環將1維數組複製到matlab中的另一個數組
例如:
inputdata=[1,0,1,0,0,0,0,0,1,1,1,0,0,1,0]
我想:
outpu1=[1,0,1,0,0] output2=[0,0,0,1,1] output3=[1,0,0,1,0]
我有一個512位的數據,我想分成16等份,每個32位。我怎樣才能在MATLAB中使用for
循環?如何使用for循環將1維數組複製到matlab中的另一個數組
例如:
inputdata=[1,0,1,0,0,0,0,0,1,1,1,0,0,1,0]
我想:
outpu1=[1,0,1,0,0] output2=[0,0,0,1,1] output3=[1,0,0,1,0]
inputdata=[1,0,1,0,0,0,0,0,1,1,1,0,0,1,0];
slices = 3; %// number of slices
slicelength = numel(inputdata)/slices;
kk=1;
for ii = 1:slices
slicedarray(ii,:) = inputdata(kk:ii*slicelength);
kk=ii*slicelength+1;
end
現在slicedarray
將包含切片,每行是一個切片。您不希望像您要求的輸出變量,因爲dynamic variable names are bad。
向量化的東西是在MATLAB更快,從而可以使用reshape
:
inputdata=[1,0,1,0,0,0,0,0,1,1,1,0,0,1,0];
slices = 3;
slicelength = numel(inputdata)/slices;
slicedarray(slices,slicelength)=0; %// initialise for speed
output = reshape(inputdata,[slices slicelength]);
在這兩種情況下,輸出是:
output =
1 0 0 1 0
0 0 0 1 1
1 0 1 0 0
可複製您的利益:
inputdata=rand(512,1);
slicelength = 16;
slices = numel(inputdata)/slicelength;
kk=1;
slicedarray(slices,slicelength)=0;
for ii = 1:slices
slicedarray(ii,:) = inputdata(kk:ii*slicelength);
kk=ii*slicelength+1;
end
output = reshape(inputdata,[slices slicelength]);
謝謝Adriaan,但我想切片存儲在不同的變量,如out1,out2 ...直到out16 ...我希望你現在不知道什麼是 我的問題。 – Shubham
我明白你的意思,但你不需要不同的變數。這就是所謂的「動態變量名稱」,這是非常非常糟糕的MATLAB練習,請參閱我提供的鏈接。我希望你明白我現在的意思...... – Adriaan
這不僅僅是錯誤的MATLAB練習,它是不好的練習 – excaza