How can I automatically scale each of the elements of a Vector V to the respective size of the cell of the struct S?
1 次查看(过去 30 天)
显示 更早的评论
I have a struct called Observations.t0 which has 140 cells -> Observations(1).t0 up to Observations(140).to and every Observation has a different amount of elements.
I want to create a Vector with ones with the length of the cell for every cell and multiply it with a value from another struct. I tried it this way:
Ratings=vertcat(ones(length(Observations(:).t0),1)*values.b(:,4));
If Observations(1).t0 had 5 elements in its cell, I want to create a vector that looks like this (1;1;1;1;1) and afterwards multiply the entire vector with the value of values.b(1,4)) which could be 3. The result would be the vector (3;3;3;3;3). Afterwards I want to do that process again with the second cell and extend my vector with the results. That could look like this: (3;3;3;3;4;4).
I get an error with the length(Observations(:).t0),1) it says to many input arguments. Can I solve that with a for loop?
0 个评论
采纳的回答
Wilson A N
2017-1-18
You can use for loop to do this as shown in the code below:
clear;
clc;
structSize = 20;
observations(structSize).t0 = [];
for i = 1:structSize
observations(i).t0 = ones(1,i);
end
values.b = rand(20,20);
Ratings = [];
for i = 1:4
Ratings = [Ratings;ones(length(observations(i).t0),1)*values.b(i,4)];
end
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Data Type Conversion 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!