- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
Tôi đang gặp sự cố khi đưa ra thuật toán...
Tôi có một loạt dữ liệu GPS ghi lại thời gian, tốc độ, khoảng cách trong khoảng thời gian 1 giây. Giả sử khoảng cách là mét và tốc độ là mét/giây. Có thể có hơn 2 giờ dữ liệu hoặc 7200 điểm. Trường "thời gian" ở đây chủ yếu được sử dụng làm tài liệu tham khảo.
Vì vậy, 5 giây đầu tiên sẽ giống như thế này, trong đó [1-5] là giây.
$dữ liệu = mảng(
1 : mảng('khoảng cách'=>0, 'thời gian'=>'2014-01-09 17:50:00', 'tốc độ'=>0.0),
2: mảng('khoảng cách'=>2, 'thời gian'=>'2014-01-09 17:50:01', 'tốc độ'=>2.0),
3: mảng('khoảng cách'=>6, 'thời gian'=>'2014-01-09 17:50:02', 'tốc độ'=>4.0),
4: mảng('khoảng cách'=>10, 'thời gian'=>'2014-01-09 17:50:03', 'tốc độ'=>4.0),
5 : mảng('khoảng cách'=>12, 'thời gian'=>'2014-01-09 17:50:04', 'tốc độ'=>2.0)
);
Tôi muốn chuyển đổi dữ liệu này thành dữ liệu được liệt kê trong khoảng cách 1 mét, ví dụ [1-6] là mét.
$dữ liệu = mảng(
1 : mảng('giây'=>1.5, 'thời gian'=>'2014-01-09 17:50:01.500', 'speed'=>.666),
2 : mảng('giây'=>2, 'thời gian'=>'2014-01-09 17:50:02', 'tốc độ'=>2.0),
3 : mảng('giây'=>2.25, 'thời gian'=>'2014-01-09 17:50:02.250', 'tốc độ'=>4.0),
4 : mảng('giây'=>2.5, 'thời gian'=>'2014-01-09 17:50:02.500', 'tốc độ'=>4.0),
5 : mảng('giây'=>2.75, 'thời gian'=>'2014-01-09 17:50:02.750', 'tốc độ'=>4.0),
6: mảng('giây'=>3, 'thời gian'=>'2014-01-09 17:50:03', 'tốc độ'=>4.0)
);
Tất nhiên điều này có thể được thực hiện mà không cần có trường thời gian. Tôi gặp khó khăn khi tính toán điều này vì nó chắc chắn không phải là một đối một. Nếu chúng tôi bắt đầu với 7200 giây dữ liệu, chúng tôi có thể kết thúc với nhiều hoặc ít dữ liệu hơn tùy thuộc vào khoảng cách được bao phủ (nhiều hơn hoặc ít hơn 7200 mét).
Biên tập viên (10/01/2014)
Dưới đây là cách thực hiện thực tế của hai phương pháp này. Thực ra, tôi đang gặp khó khăn trong việc quyết định xem mình thích cách tiếp cận nào hơn, lặp đi lặp lại hay đệ quy. Tôi có thể lặp lại
Phương pháp 1, lặp lại (@Ezequiel Muns, tôi đã thực hiện những sửa đổi rất nhỏ):
hàm timeToDistance($data) {
if(sizeof($data) == 0){ return }
$startTime = $data[0]['time'];
$prev = null;
$kết quả = mảng();
foreach ($dữ liệu dưới dạng $secs => $row) {
$row['seconds'] = $secs; // để đơn giản hóa việc truyền trong vài giây
nếu ($ trước == null) {
// đảm bảo chúng ta có một cặp
$prev = mảng( 'khoảng cách'=>0 );
}
foreach (distanceRowsBetween($startTime,$prev, $row) as $dist => $distRow) {
$result[$dist] = $distRow;
}
$prev = $row;
}
trả về kết quả $;
}
hàm distanceRowsBetween($startTime,$prevRow, $nextRow) {
// Trả về các hàng theo khoảng cách nằm giữa $prevRow (độc quyền)
// và $nextRow (bao gồm)
$rows = array();
$currDist = $prevRow['distance'];
while (true) {
// cố gắng di chuyển đến toàn bộ đơn vị khoảng cách tiếp theo
$dDist = ceil($currDist) - $currDist;
$dDist = $dDist == 0.0? 1.0 : $dDist; // dDist là 1 đơn vị nếu currDist là toàn bộ
$currDist += $dDist;
if ($currDist > $nextRow['distance'])
phá vỡ;
$currSpeed = $nextRow['speed'];
$currSecs = strtotime($nextRow['time']) - strtotime($startTime);
$currTime = $nextRow['time'];
$rows[$currDist] = mảng(
'tốc độ' => $currSpeed,
'giây' => $currSecs,
'thời gian' => $currTime,
);
}
trả về hàng $;
}
Phương pháp 2, đệ quy (@Nathaniel Ford mã giả, mã thực tế của tôi):
hàm data2dist($time_data = array()){
$dist_data = mảng();
if(sizeof($time_data) == 0){ return $dist_data }
$start_point = array_shift($time_data);
$start_time = $start_point['time'];
data2dist_sub($start_time, $time_data,$dist_data,$start_point);
trả về $dist_data;
}
hàm data2dist_sub($start_time,&$time_data, &$dist_data, $start_point = array()){
if(sizeof($time_data) == 0 && !isset($start_point)){
return;
}
if(sizeof($dist_data) == 0){
$prev_dist = 0;
} khác {
$prev_dist = $dist_data[sizeof($dist_data)-1]['distance'];
}
// vì khoảng cách đang được tích lũy, hãy lấy khoảng cách hiện tại bằng cách trừ đi khoảng cách cuối cùng
$point_dist = $start_point['distance'] - $prev_dist;
if($point_dist == 1){
// chính xác là 1: hoàn hảo, thêm và tiếp tục
$dist_data[] = $start_point;
$start_point = array_shift($time_data);
} khác nếu($point_dist > 1){
// lớn hơn 1: loại bỏ hiệu quả 1 khỏi điểm hiện tại và gửi nó về phía trước
$partial_point = $start_point;
$partial_point['distance'] = 1 + $prev_dist;
$dist_data[] = $partial_point;
} khác nếu($point_dist < 1){
// nhỏ hơn 1, chuyển sang mục tiếp theo và tiếp tục (nhỏ: tốc độ một phần này được hấp thụ vào mục tiếp theo)
$start_point = array_shift($time_data);
if(!isset($start_point)){ return }
$start_point['distance'] += $point_dist;
}
data2dist_sub($start_time,$time_data,$dist_data,$start_point);
}
câu trả lời hay nhất
Bạn có thể đơn giản hóa điều này bằng cách lưu ý rằng đối với mỗi cặp hàng theo thời gian liên tiếp, bạn cần tính 0 hoặc nhiều hàng theo khoảng cách và những hàng này chỉ phụ thuộc vào hai hàng theo thời gian này.
Vì vậy, phép tính đơn giản hơn này bắt đầu bằng một hàm, một khung loại bỏ phép tính các giá trị Giây, Tốc độ và Thời gian đã chuyển đổi để đơn giản.
hàm distanceRowsBetween($prevRow, $nextRow) {
// Trả về các hàng theo khoảng cách nằm giữa $prevRow (độc quyền)
// và $nextRow (bao gồm)
$rows = array();
$currDist = $prevRow['distance'];
while (true) {
// cố gắng di chuyển đến toàn bộ đơn vị khoảng cách tiếp theo
$dDist = ceil($currDist) - $currDist;
$dDist = $dDist == 0.0? 1.0 : $dDist; // dDist là 1 đơn vị nếu currDist là toàn bộ
$currDist += $dDist;
if ($currDist > $nextRow['distance'])
phá vỡ;
// tính $currSecs ở khoảng cách $currDist
// tính $currSpeed
// tính toán $currTime
$rows[$currDist] = mảng(
'tốc độ' => $currSpeed,
'giây' => $currSecs,
'thời gian' => $currTime,
);
}
trả về hàng $;
}
Bây giờ bạn đã có điều đó, tất cả những gì còn lại là lặp lại từng cặp liên tiếp trong đầu vào và tích lũy các hàng kết quả theo khoảng cách:
hàm timeToDistance($data) {
$prev = null;
$kết quả = mảng();
foreach ($dữ liệu dưới dạng $secs => $row) {
$row['seconds'] = $secs; // để đơn giản hóa việc truyền trong vài giây
nếu ($ trước == null) {
$prev = $row; // đảm bảo chúng ta có một cặp
continue;
}
foreach (distanceRowsBetween($prev, $row) as $dist => $distRow) {
$result[$dist] = $distRow;
}
$prev = $row;
}
trả về kết quả $;
}
Lưu ý rằng trong hàm này, tôi đang điền và chuyển giá trị "giây" hiện tại từ hàng để giảm số lượng đối số được truyền cho hàm trước đó.
Về php - Chuyển đổi dữ liệu thời gian: [Khoảng cách, tốc độ] thành dữ liệu khoảng cách: [Thời gian, tốc độ], chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/21033188/
您好,我是使用 xampp 的 PHPmyadmin 新手,没有 MYSQL 背景。当我喜欢研究它是如何工作的时,我的脑海中浮现出一个想法,它让我一周都无法休眠,因为我似乎无法弄清楚如何使用 MIN(
Go docs say (强调): Programs using times should typically store and pass them as values, not pointers.
我有一组用户在 8 月 1 日有一个条目。我想找到在 8 月 1 日有条目但在 8 月 2 日没有做任何事情的用户。 现在是 10 月,所以事件已经过去很久了。 我有限的知识说: SELECT * F
我有以下代码,主要编码和取消编码时间结构。这是代码 package main import ( "fmt" "time" "encoding/json" ) type chec
Bạn có thể giải thích chi tiết "thời gian CPU của người dùng" và "thời gian CPU hệ thống" không? Mình đọc nhiều nhưng không hiểu lắm. Câu trả lời hay nhất Sự khác biệt là thời gian dành cho không gian người dùng hay không gian kernel. Thời gian CPU của người dùng là thời gian bộ xử lý chạy mã chương trình (hoặc mã trong thư viện)
应用程序不计算东西,但做输入/输出、读取文件、使用网络。我希望探查器显示它。 我希望像 callgrind 中的东西一样,在每个问题中调用 clock_gettime。 或者像 oprofile 那样
目前我的 web 应用程序接收 websocket 数据来触发操作。 这会在页面重新加载时中断,因此我需要一个能够触发特定事件的客户端解决方案。 这个想法可行吗? 假设你有 TimeX = curre
Thật khó để nói những gì đang được hỏi ở đây. Câu hỏi mơ hồ, mơ hồ, không đầy đủ, quá rộng hoặc hùng biện và không thể trả lời hợp lý ở dạng hiện tại. Để được trợ giúp làm rõ vấn đề này để bạn có thể mở lại, hãy truy cập trung tâm trợ giúp. Đã đóng
我有一个 Instant (org.joda.time.Instant) 的实例,我在一些 api 响应中得到它。我有另一个来自 (java.time.Instant) 的实例,这是我从其他调用中获得
如何集成功能 f(y) w.r.t 时间;即 'y'是一个包含 3000 个值和值 time(t) 的数组从 1 到 3000 不等。所以,在整合 f(y) 后我需要 3000 个值. 积分将是不确定
可以通过 CLI 创建命名空间,但是如何使用 Java SDK 来创建命名空间? 最佳答案 它以编程方式通过 gRPC API 完成由服务公开。 在 Java 中,生成的 gRPC 客户端可以通过 W
我有一个函数,它接受 2 组日期(开始日期和结束日期),这些日期将用于我的匹配引擎 我必须知道start_date1和end_date1是否在start_date2和end_date2内 快进:当我在
我想从 Python 脚本运行“time”unix 命令,以计算非 Python 应用程序的执行时间。我会使用 os.system 方法。有什么方法可以在Python中保存这个输出吗?我的目标是多次运
我正在寻找一种“漂亮的数字”算法来确定日期/时间值轴上的标签。我熟悉 Paul Heckbert's Nice Numbers algorithm . 我有一个在 X 轴上显示时间/日期的图,用户可以
在 PowerShell 中,您可以格式化日期以返回当前小时,如下所示: Get-Date -UFormat %H 您可以像这样在 UTC 中获取日期字符串: $dateNow = Get-Date
我正在尝试使用 Javascript 向父子窗口添加一些页面加载检查功能。 我的目标是“从父窗口”检测,每次子窗口完全加载然后执行一些代码。 我在父窗口中使用以下代码示例: childPage=wi
我正在尝试设置此 FFmpeg 命令的 drawtext 何时开始,我尝试使用 start_number 但看起来它不会成功。 ffmpeg -i 1.mp4 -acodec aac -keyint_
我收到了一个 Excel (2010) 电子表格,它基本上是一个文本转储。 单元格 - J8 具有以下信息 2014 年 2 月 4 日星期二 00:08:06 EST 单元格 - L8 具有以下信息
我收到的原始数据包含一列具有以下日期和时间戳格式的数据: 2014 年 3 月 31 日凌晨 3:38 单元格的格式并不一致,因为有些单元格有单个空格,而另一些单元格中有两个或三个字符之间的空格。所以
我想知道是否有办法在我的 Grails 应用程序顶部显示版本和构建日期。 编辑:我应该说我正在寻找构建应用程序的日期/时间。 最佳答案 在您的主模板中,或任何地方。 Server version:
Tôi là một lập trình viên xuất sắc, rất giỏi!