matlab: 为什么我的程序中for循环只执行了一次? 谢谢

问题描述:

matlab: 为什么我的程序中for循环只执行了一次? 谢谢
A = work_3(nmat); %多行两列的矩阵 A_1 = A(:,1); A_2 = A(:,2); s1 = length(unique(A_2)); count = hist(A_2,unique(A_2)); p = 1; k = 1; q = count(1); D = work_5(A_1,p,q); for j = 1:s1-1 if (length(D) >= 3) output = D; sprintf('%4d',output); D = []; p = k + count(j); q = q + count(j+1); D = work_5(A_1,p,q); k = p; else p = p; q = q + count(j+1); D = []; D = work_5(A_1,p,q); k = k + count(j); end
1个回答 分类:综合 2014-11-03

问题解答:

我来补答
试一下我的修改:
work_3(nmat); %多行两列的矩阵
A_1 = A(:,1);
A_2 = A(:,2);
s1 = numel(unique(A_2)); % length(unique(A_2));
count = hist(A_2,unique(A_2));
p = 1; k = 1; q = count(1);
D = work_5(A_1,p,q);
for j = 1:(s1-1)
if (length(D) >= 3)
output = D;
sprintf('%4d',output);
D = [];
p = k + count(j);
q = q + count(j+1);
D = work_5(A_1,p,q);
k = p;
else p = p; q = q + count(j+1);
D = [];
D = work_5(A_1,p,q);
k = k + count(j);
end
end
再问: 还是不行,问题好像还是在for循环上,感觉j = 1/j = 2之后,就直接输出第一组数据,不再循环了。不知道您能不能理解我代码的意思?
再答: work_3(nmat); %多行两列的矩阵
A_1 = A(:,1);
A_2 = A(:,2);
s1 = numel(unique(A_2)) % 告诉我输出结果
count = hist(A_2,unique(A_2));
p = 1; k = 1; q = count(1);
D = work_5(A_1,p,q);
for j = 1:(s1-1)
j
if (length(D) >= 3)
output = D;
sprintf('%4d',output);
p = k + count(j);
q = q + count(j+1);
D = work_5(A_1,p,q);
k = p;
else
p = p;
q = q + count(j+1);
D = work_5(A_1,p,q);
k = k + count(j);
end
end

不行给我全部程序吧。
再问: 您有没有邮箱?
我问题发现了,for循环的确都执行了,但是输出只输出了一次,是本应该得到的所有数据的 最后一组,很奇怪,为什么前n-1组数据为什么没输出。。。
再答: 这里可以上传附件的。
找到问题了,就好解决了。单步走几下看看。
再问: 好像只能上传图片,您帮我看看在for循环里,是不是因为D接收的数据在每次循环下,被覆盖了或者是被清空了,才导致了output只输出最后一组数据。
再答: “D接收的数据在每次循环下,被覆盖了” 难道不是你想要的吗?
再问: 不是,每循环一次的结果我都要,是不是这个地方我的逻辑错了?
再答: 那就每次都打印出来。
或者 D(:,i)=work_5(A_1,p,q); 之类。
 
 
展开全文阅读
剩余:2000
上一页:一道物理提题