a=[0 1 2 3 4 5];
j=1,k=1,l=1;
for i=0:5
switch mod(i,3)
case 1
b(j)=a(i);
j=j+1;
case 2
c(k)=a(i);
k=k+1;
otherwise
d(l)=a(i);
l=l+1;
end
end
b
c
d
subplot(2,1,1),plot(b,c)
subplot(2,1,2),plot(b,d)
我基本的意思是这样的,数组a中的数对3取余数,余数为0的放到数组b中,余数为1的放到数组c中,余数为2的放到d中,
本人没有学过matlab ,因为毕业设计要用,但也不太难,就差这个了,麻烦各位好心人了!!!!!!
a=[0 1 2 3 4 5];
j=1,k=1;
for i=0:5
switch mod(i,3)
case 1
b(j)=a(i);
j=j+1;
case 2
c(k)=a(i);
k=k+1;
otherwise
end
end
b
c
subplot(2,1,1),plot(b,c)
但是如果改成这个程序却能正常运行,不知道原因在哪里!!!
引用: 原帖由 最后的轮回 于 2010-6-5 08:58 发表
a=[0 1 2 3 4 5];
j=1,k=1,l=1;
for i=0:5
switch mod(i,3)
case 1
b(j)=a(i);
j=j+1;
case 2
c(k)=a(i);
k=k+1;
otherwis ...
MATLAB中,数组的下标是从1开始的,不是从零开始,for i=1:6。
数组a中的数对3取余数的话,应该是 mod(a(i),3)。
还有,plot(b,d),这个命令要求b和d有相同的维数,不然会报错,如果a阵的数值变化,导致plot中的矩阵维数不一样,会报错的。
楼主检查一下,看看行不行。
第一个程序的otherwise对a(0)操作,会报错,第二个a(0)刚好跳过了(otherwise为空),所以不会报错。
%我基本的意思是这样的,数组a中的数对3取余数,余数为0的放到数组b中,余数为1的放到数组c中,余数为2的放到d中,
%本人没有学过matlab ,因为毕业设计要用,但也不太难,就差这个了,麻烦各位好心人了!!!!!!
clc%clear command window
clear%clear variables
clf%clear figures
close all%close all figures
format compact%set compact format for command display
a=[0 1 2 3 4 5 12 13 14 15 17 23 5 8 4 3];
looptimes = length(a)%figure times to loop
j = 1;k = 1;l = 1;
for i = 1:looptimes
switch mod(a(i),3)
case 1
b(j) = a(i);
j = j + 1;
case 2
c(k) = a(i);
k = k + 1;
otherwise
d(l) = a(i);
l = l + 1;
end
end
b
c
d
subplot(3,1,1),plot(b,'^');
ylabel('b');
subplot(3,1,2),plot(c,'*');
ylabel('c');
subplot(3,1,3),plot(d,'x');
ylabel('d');