running a code on all columns

Consider, Y is a 1000 by 100 matrix...100 columns and 1000 rows
Y1=Y(:,1);
if I run this code
S1 = numel(Y1);
xx1 = reshape(Y1(1:S1 - mod(S1, 20)), 20, []);
if I run this code
xx1 is a 20 by 50 matrix
What code can I use to do the same thing for the remaining 99 columns of Y

 采纳的回答

KSSV
KSSV 2019-8-14
编辑:KSSV 2019-8-14
Y = rand(1000,100) ;
iwant = zeros(20,50,100) ;
for i = 1:100
Y1 = Y(:,i) ;
S1 = numel(Y1); % this is same always 1000
iwant(:,:,i) = reshape(Y1(1:S1 - mod(S1, 20)), 20, []);
end
With out loop
% no loop
m = 1000 ;
n = mod(m,20) ;
P = Y(1:m-n,:) ;
Q = reshape(P,20,50,[]) ;

3 个评论

Thank You the loop works...
Asking the question further:
Consider, Y is a 1000 by 100 matrix...100 columns and 1000 rows
Y1=Y(:,1);
if I run this code
S1 = numel(Y1);
xx1 = reshape(Y1(1:S1 - mod(S1, 20)), 20, []);
y1 = sum(xx1, 1).' / 20;
y1 is a 50 by 1 matrix
assuming z is also a 50 by 1 matrix
subtr=abs(y1-z)
What code can I use to do the same thing for the remaining 99 columns of Y
KSSV
KSSV 2019-8-14
编辑:KSSV 2019-8-14
If you want same to repeat for every column ..you can run a loop...but there are options to avoid looping.

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by