Command and Control vectors
古いコメントを表示
I am having trouble trying to make this work. I want it so that whenever a value in t is 1, it will output five zeros onto a row vector. Whenever the value of t is 2, I want it to output 5 ones to the same row vector. When the value of t is 3, I want it to output 5 twos onto the row vector. I want it so that my ending vector will be [0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 2 2 2 2 2]. Right now, it is only showing [0 1 0 1 0 2], so basically it is only outputting the value that I want once. How can I make it output the same number that I want 5 times instead of just once?
t = [1, 2, 1, 2, 1, 3];
d = 0;
for n = 1:length(t)
if (t(n) == 1)
for k = 0:4
k = k+1;
d(n) = 0;
end
elseif (t(n) == 2)
for k = 0:4
k = k+1;
d(n) = 1;
end
elseif (t(n) == 3)
for k = 0:4
k = k+1;
d(n) = 2;
end
end
end
display(d)
1 件のコメント
Walter Roberson
2018 年 11 月 23 日
you can use kron or repelem
採用された回答
その他の回答 (1 件)
Stephen23
2018 年 11 月 23 日
0 投票
>> t = [1,2,1,2,1,3];
>> kron(t-1,ones(1,5))
ans =
0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 2 2 2 2 2
>>
4 件のコメント
Chase Lee
2018 年 11 月 23 日
Walter Roberson
2018 年 11 月 23 日
write the same value to 5 rows and one column of aa matrix . reshape it to aa row vector afterwards
Is there any other way besides the use of kron or repelem? I would prefer just relying on a for loop within the if statement.
Yes, sure, why use one line of code when you can use 20 lines of code? You could waste even more time by adding even more lines of code to do the same thing but why?
Even ignoring the use of loops and ifs there's already plenty of pointless lines in your code, for example:
for k = 0:4
k = k + 1;
%...
end
is simply a more complicated version of
for k = 1:5
%...
end
Walter Roberson
2018 年 11 月 23 日
d(n*5-4:n*5) = value
カテゴリ
ヘルプ センター および File Exchange で Graphics Performance についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!