2015-12-03 19 views

回答

2
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]); 
+0

謝謝Adriaan,但我想切片存儲在不同的變量,如out1,out2 ...直到out16 ...我希望你現在不知道什麼是 我的問題。 – Shubham

+0

我明白你的意思,但你不需要不同的變數。這就是所謂的「動態變量名稱」,這是非常非常糟糕的MATLAB練習,請參閱我提供的鏈接。我希望你明白我現在的意思...... – Adriaan

+2

這不僅僅是錯誤的MATLAB練習,它是不好的練習 – excaza

相關問題