How to add/append column in an array in a for loop?
4 次查看(过去 30 天)
显示 更早的评论
Hello, I want to get the array [25 25 25 25 25] as the end value of Batt. However, the loop overwrites and I get [25 25 25]. I can't seem to figure out how to append the n_EVs(2) from the next column.
n_AGs = 2;
n_EVs = [2 3];
for j=1:n_AGs
Batt(1,1:n_EVs(j)) = 25;
end
I specifically want to take the value of n_EVs from the array at each iteration and append the Batt at each iteration. For example:
In the first iteration it should give [25 25]. The second iteration should give [25 25 25 25 25] after appending [0 0 25 25 25] to [25 25].
Would appreciate any help. Best!
0 个评论
采纳的回答
Image Analyst
2018-12-24
编辑:Image Analyst
2018-12-24
Does this do what you want:
n_EVs = [2 3];
n_AGs = length(n_EVs)
Batt = [];
for k = 1 : n_AGs
Batt = [Batt, 25 * ones(1, n_EVs(k))]
end
Output:
n_AGs =
2
Batt =
25 25
Batt =
25 25 25 25 25
And for n_EVs = [2, 3, 5] it gives:
Batt =
25 25
Batt =
25 25 25 25 25
Batt =
25 25 25 25 25 25 25 25 25 25
更多回答(1 个)
madhan ravi
2018-12-24
编辑:madhan ravi
2018-12-24
simply without loop:
Batt=repmat(25,1,sum(n_EVs))
%or
Batt=repelem(25,1,sum(n_EVs))
%or
Batt(1:5)=25;
If you want to stick with a loop then:
Batt=zeros(1,sum(n_EVs));
for i = 1:sum(n_EVs) % pfcourse you need to preallocate
Batt(i)=25; % just use linear indexing
end
Note: you only get three elements because your loop runs only till 2 not 5
5 个评论
madhan ravi
2018-12-24
编辑:madhan ravi
2018-12-24
Alright try this:
n_EVs = [2 3];
Batt=zeros(1,sum(n_EVs)); % you need to preallocate
n_AGs = 2;
blabla=[n_EVs(1) sum(n_EVs)];
for i = 1:numel(n_EVs)
Batt(1:blabla(i))=25 % just use linear indexing
end
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Bartlett 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!