我正在使用Mathematica 7来处理大型数据集.数据集是有符号整数的三维数组.这三个级别可以被认为对应于每个镜头的X个点,每个扫描的Y个镜头和每个组的Z个扫描.
我还有一个"归零"镜头(包含X点,它是整数的有符号分数),我想从数据集中的每个镜头中减去.之后,我将永远不再需要原始数据集.
如何在不创建数据集的新副本或部分数据集的情况下执行此转换?从概念上讲,数据集位于内存中,我想扫描每个元素,并在内存中的该位置进行更改,而不会将其永久复制到其他内存位置.
以下自包含代码捕获了我尝试执行的所有方面:
(* Create some offsetted data, and a zero data set. *)
myData = Table[Table[Table[RandomInteger[{1, 100}], {k, 500}], {j, 400}], {i, 200}];
myZero = Table[RandomInteger[{1, 9}]/RandomInteger[{1, 9}] + 50, {i, 500}];
(* Method 1 *)
myData = Table[
f1 = myData[[i]];
Table[
f2 = f1[[j]];
f2 - myZero, {j, 400}], {i, 200}];
(* Method 2 *)
Do[
Do[
myData[[i]][[j]] = myData[[i]][[j]] …Run Code Online (Sandbox Code Playgroud) 我正在自学C++,在这个过程中,我正在编写简单的小程序来学习基本思想.关于"传递引用",我很困惑为什么下面的代码工作(一些代码只是练习重载构造函数):
#include <iostream>
#include <string>
using namespace std;
class Dude
{
public:
string x;
Dude(); // Constructor 1
Dude(const string &a); // Constructor 2
};
Dude::Dude() : x("hi") {}
Dude::Dude(const string &a) : x(a) {}
int main()
{
Dude d1;
Dude d2 = Dude("bye");
cout << d1.x << endl;
cout << d2.x << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在"main()"中,我创建一个"Dude"类型的对象"d2",并使用构造函数2将"x"设置为字符串"bye".
但是在构造函数2的声明中,我告诉它接受字符串的地址,而不是字符串本身.那么为什么我可以传递它"bye"(这是一个字符串).为什么我不必创建变量字符串,然后将该字符串的地址传递给Dude的Constructor 2?