Adding a column every nth column without replacing existing one
古いコメントを表示
Hey all,
I am looking for a solution to the problem I mentioned in the title.
FOr example, I have matrix A
A = [1 2 3 4; 5 6 7 8; 9 10 11 12];
I now want to add every 2nd (and later 3th) column a new column containing zeros.
The result should be like this:
result = [1 0 2 0 3 0 4 0; 5 0 6 0 7 0 8 0; 9 0 10 0 11 0 12 0];
I know how to create a new column containg only zeros
B = zeros(number_of_rows,1);
Previously, I used
C = [A(:,1:2) B A(:,2+1:end)];
But this only works for a specific column and not every nth column.
Thanks for your answers in advance!
採用された回答
その他の回答 (2 件)
Max Murphy
2019 年 12 月 11 日
Test Data
A = [1 2 3 4; 5 6 7 8; 9 10 11 12];
Function
function A = addDataNthColumn(A,B,n)
% ADDDATANTHCOLUMN Add data in column vector or matrix B to every nth
% column of A
if nargin < 3
n = 3;
end
if size(A,1) ~= size(B,1)
error('A and B must have same number of rows');
end
if size(A,2) >= n
% Use recursion to iterate on A
A = [A(:,1:(n-1)), B, addDataNthColumn(A(:,n:end),B,n)];
else
A = [A, B]; % Last "set" just concatenate them
end
end
Usage
>> test = addDataNthColumn(A,zeros(3,2),2)
test =
1 0 0 2 0 0 3 0 0 4 0 0
5 0 0 6 0 0 7 0 0 8 0 0
9 0 0 10 0 0 11 0 0 12 0 0
5 件のコメント
Chuguang Pan
2019 年 12 月 11 日
編集済み: Chuguang Pan
2019 年 12 月 11 日
rowA=size(A,1);
colA=size(A,2);
B=zeros(rowA,colA*2);
B(:,1:2:2*colA)=A;
It is every 2th column.
Max Murphy
2019 年 12 月 11 日
Nice profile picture. Is that a well isolated neuron I see? :)
Haha it's from a sparse extracellular array, so I don't know about well-isolated, but otherwise yes :)
Adam Danz
2019 年 12 月 11 日
Well there must have been good thresholding on your instrumentation, then. It's such a good feeling to work with an isolatable single neuron but mult-iunit activity is also fun. Now you have me all nostalgic.
Enthusiasten
2019 年 12 月 12 日
Chuguang Pan
2019 年 12 月 12 日
It is every 2th column. Now I put it in Answer this question
rowA=size(A,1);
colA=size(A,2);
B=zeros(rowA,colA*2);
B(:,1:2:2*colA)=A;
カテゴリ
ヘルプ センター および File Exchange で Matrix Indexing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!