So i wanted to add a column to this table.

2 ビュー (過去 30 日間)
CalebJones
CalebJones 2019 年 8 月 21 日
コメント済み: CalebJones 2019 年 11 月 12 日
Capture.JPGCode for=> at the 2nd column i wanted to add data in form of an iteration.Starting with string 'Rest' from 1 to 202 then 202 to 204 will have sting 'active' then 205 to 407 will have 'rest', 408 to 610 will have 'active'.
Rest and active string in the second column for every 202nd iternation.
basically for 202 seconds its rest and next 202 seconds it active.... this is basically a paradim for fnirs brain signal.

採用された回答

Guillaume
Guillaume 2019 年 8 月 23 日
編集済み: Guillaume 2019 年 8 月 23 日
Note that 1 to 203 having the same element makes that a half-period of 203, not 202.
Simple way to create a column vector that switches between two values at regular interval be;pw. I'm creating a table since as David said, you can't mix types in a matrix. I'm also storing 'rest' and 'active' as categorical, it's the most logical data type for this:
halfperiod = 203; %calculated however you want
values = categorical({'rest'; 'active'});
numperiods = ceil(numel(zz) / halfperiod / 2); %last period may not be filled completely if numel(zz) is not a multiple of 2*halfperiod
filler = repmat(repelem(values, halfperiod), numperiods, 1); %create repeated values numperiod times
result = table(zz, filler(1:numel(zz)));
result.Properties.VariableNames = {'zz', 'state'} %optional give good names to the table variables
No loop needed.
  10 件のコメント
CalebJones
CalebJones 2019 年 11 月 12 日
halfperiod = round(interval);
Does the job for me. Thank you.

サインインしてコメントする。

その他の回答 (1 件)

David K.
David K. 2019 年 8 月 21 日
So one big problem here is that you do not have a table. You have a matrix. And matrices cannot have strings and numbers in them. You have plenty of choices so here are 2.
If you want the matrix format you could instead say that active is 1 and rest is 0 and create the matrix as such:
x(1:201,1) = 0;
x(202:204,1) = 1;
x(205:407,1) = 0;
x(408:610,1) = 1;
FullMat = [zz , x];
If you want the words themselves you can do nearly the same thing:
x(1:201,1) = {'Rest'};
x(202:204,1) = {'active'};
x(205:407,1) = {'Rest'};
x(408:610,1) = {'active'};
This creates a cell of values. If you want them as the data type table you can then do
myTable = table(zz,x);
  6 件のコメント
CalebJones
CalebJones 2019 年 8 月 23 日
Thank you so so much.

サインインしてコメントする。

カテゴリ

Find more on Environment and Settings in Help Center and File Exchange

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by