如何写一个特定的数字通过循环

2次查看(最近30天)
伊凡密歇根州
伊凡密歇根州 2021年9月3日
我有一个代码
1)读取两个文件
2)计算file1点与file 2点之间的距离
3)写出距离小于2公里的输出。
问题是,我想在输出文件中添加一个额外的列,它包含每一行的具体数目
我的代码是
数据= readcell (“中”
lat1 = cell2mat(数据(4:最后,2))
lon1 = cell2mat(数据(4:最后,3))
值= cell2mat(数据(4:结束,5))
filename1 =“file2.txt”% arxeio我makroseismika
(d1,特克斯)= importdata (filename1);
lat2 = d1.data (:, 2);
lon2 = d1.data (: 1);
c = d1.data (:, 4);
z = 1:元素个数(stname)
距离= (deg2km(距离(lat1 (z), lon1 (z), lat2, lon2)));%计算距离
Withinkm = distance <= 2;找到距离小于2公里的行索引。
%从所有点集合中只提取那些关闭点。
closePointskm = [lat2(withinkm), lon2(withinkm), c(withinkm), distance (withinkm), value(z:numel(withinkm))]
writematrix ()
结束
问题在第23行。
命令窗口显示:
你能帮我一下吗?

答案(2)

dpb
dpb 2021年9月3日
除了显示的代码中没有23行以外:),问题实际上就在这一行中
距离= (deg2km(距离(lat1 (z), lon1 (z), lat2, lon2)));%计算距离
因为你只保存每次循环中计算的当前值,所以你只保存最后一个值。然后,同样的问题出现在下一行。
类似的
...
距离= 0(元素个数(stname), 1);%预分配输出数组
z = 1:元素个数(stname)
距离(z) = deg2km(距离(lat1 (z), lon1 (z), lat2, lon2));
结束
Withinkm = distance <= 2;找到距离小于2公里的行索引。
%从所有点集合中只提取那些关闭点。
closePointskm = [lat2(withinkm), lon2(withinkm), c(withinkm), distance (withinkm), find(withinkm)];
...
这将写入数组中找到/保存了相应值的行。
然后,您还需要修复调用的语法 writematrix
7评论
dpb
dpb 2021年9月7日
"我想"重复"所有输出文件相同的数字"
这是你第一次这么说;看起来您正在从代码的其余部分中添加在文件中发现距离搜索为真的位置。
对于上面,如果你知道什么值 “价值” 是(在上面的代码中没有任何关于它的提示,除了它是一个与其他大小相同的数组)
如果你知道你要找的是数组中的哪个索引, repmat () 可能会感兴趣。否则,如果它是来自数组的值,那么似乎同样的逻辑寻址向量也将是用于提取对应于其他元素的数组值的逻辑(也就是说:)东西。

登录评论。


奥利维拉佩雷拉
奥利维拉佩雷拉 2021年9月10日
我按照旧的原则工作
使用for循环获取sum意味着:
创建一个数字数组,在示例中为int值。
创建一个for语句,使用一个从0到数组长度的int变量,在循环中每次递增1。
在for语句中,将数组中的每个元素添加到一个int sum中。

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!