extract small vector from large vector
显示 更早的评论
b=[1;2;3;4;5;6;7;8;9;10;11;12;13;14;15];
a=zeros(3,1);
c=([a;b]);
d=(c(1,1):c(6,1));
e=(c(4,1):c(9,1));
please suggest me the way how can i write the code for vector d and e.
i want d vector as; d= [0;0;0;1;2;3] and
vector e as ; e=[1;2;3;4;5;6]
采纳的回答
b = [1;2;3;4;5;6;7;8;9;10;11;12;13;14;15];
a = zeros(3,1);
c = [a; b]
c = 18×1
0
0
0
1
2
3
4
5
6
7
d = c(1:6,1) % ",1" not necessary since c only has one column
d = 6×1
0
0
0
1
2
3
e = c(4:9) % ",1" omitted
e = 6×1
1
2
3
4
5
6
8 个评论
Thanks Sir,
You're welcome!
sir, just tell me is it correct? if wrong please correct me.
utdelt=([1;2;3;4;5;6;7;8;9;10;11;12;13;14;15]);
nodof=3;
for i=1
for n=1:1:5
if n==1
Utdelt=([zeros(nodof,1); (utdelt(1:nodof,i))]);
eval(['Utdelt',num2str(n),'=[zeros(nodof,1); (utdelt(1:nodof,i))]']);
else
Utdelt=utdelt([(1+(n-2)*nodof):(6+(n-2)*nodof),(i)]);
eval(['Utdelt',num2str(n),'=[utdelt([(1+(n-2)*nodof):(6+(n-2)*nodof,(i)])]']);
end
end
I can't say whether it's correct since I don't know what it's supposed to do, but I would make Utdelt a matrix:
utdelt=([1;2;3;4;5;6;7;8;9;10;11;12;13;14;15]);
nodof=3;
Utdelt = zeros(6,5);
for i=1
for n=1:1:5
if n==1
Utdelt(:,n) = [zeros(nodof,1); utdelt(1:nodof,i)];
else
Utdelt(:,n) = utdelt( 1+(n-2)*nodof : 6+(n-2)*nodof , i );
end
end
end
Utdelt
Utdelt = 6×5
0 1 4 7 10
0 2 5 8 11
0 3 6 9 12
1 4 7 10 13
2 5 8 11 14
3 6 9 12 15
sir i want to extract Utdelt as a column vector of 6X1.
But you calculate Utdelt in a loop that iterates 5 times.
If you want each Utdelt as a 6x1 column vector then how you had it was basically fine. Here is your code again, except without the eval statements, without all the unnecessary parentheses, fixing the indentation, and adding a missing end at the end.
utdelt=([1;2;3;4;5;6;7;8;9;10;11;12;13;14;15]);
nodof=3;
for i=1
for n=1:1:5
if n==1
Utdelt = [zeros(nodof,1); utdelt(1:nodof,i)];
else
Utdelt = utdelt( 1+(n-2)*nodof : 6+(n-2)*nodof , i );
end
Utdelt
% presumably, you would do something with Utdelt at this point
end
end
Utdelt = 6×1
0
0
0
1
2
3
Utdelt = 6×1
1
2
3
4
5
6
Utdelt = 6×1
4
5
6
7
8
9
Utdelt = 6×1
7
8
9
10
11
12
Utdelt = 6×1
10
11
12
13
14
15
thank you sir, in this loop i am calculating the f_s but when i am seeing the result the output is comin wrong.
utdelt=([1;2;3;4;5;6;7;8;9;10;11;12;13;14;15]);
Ktts=rand(6,6);
nodof=3;
for i=1
for n=1:1:5
if n==1
Utdelt = [zeros(nodof,1); utdelt(1:nodof,i)];
else
Utdelt = utdelt( 1+(n-2)*nodof : 6+(n-2)*nodof , i );
end
Utdelt
% presumably, you would do something with Utdelt at this point
end
f_s=Ktts*Utdelt;
end
That uses the value of Utdelt that was calculated for n=5. Previously calculated Utdelt values, i.e., for n=1 through n=4, are not used. Maybe that's what's wrong.
更多回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
