小编ASh*_*lly的帖子

格式化使用消息

如果您查看Mathematica8中的Combinatorica包,您将找到函数的定义.我有兴趣知道的是Mathematica如何知道如何格式化使用信息.有些东西告诉我,我没有看正确的文件.无论如何,让我们尝试以下方法:(mathematicapath)/AddOns/LegacyPackages/DiscreteMath/Combinatorica.m

Cofactor::usage = "Cofactor[m, {i, j}] calculates the (i, j)th cofactor of matrix m."
Run Code Online (Sandbox Code Playgroud)

该行是上述文件中的682行.现在如果我们在mathematica笔记本中运行它并且我们使用,?Cofactor我们将看到完全相同的消息.但是如果我们得到包,那么消息就被格式化了.这是一个截图:

在此输入图像描述

注意函数中的m,i和j是如何变化的,并且在消息中添加了一个双箭头.我认为箭头已添加到邮件中,因为它存在文档.有人可以解释这种行为吗?


编辑:这是我的笔记本文件的屏幕截图,自动保存到m文件.

在此输入图像描述

正如你所看到的那样,L并且M在斜体时代是新的罗马.现在我将加载包并查看用法.

在此输入图像描述

到现在为止还挺好.现在让我们看一下文档中心.我会寻找这个功能LineDistance.

在此输入图像描述

如您所见,它显示了一个奇怪的消息.在这种情况下,我们只想显示没有任何样式的消息.我仍然无法弄清楚Combinatorica包是如何做到的.我按照这个来制作索引,以便doc中心可以显示摘要.摘要本质上是使用显示.如果我需要更具体,请告诉我.

wolfram-mathematica mathematica-8 usage-message

7
推荐指数
1
解决办法
649
查看次数

ios:以编程方式请求Game Center登录?

我有一个简单的问题,但我查看了Apple的文档并进行了一些搜索,但我找不到答案.

是否有可能以编程方式提取Game Center的登录视图?我有一个UIButton需要Game Center,如果客户端在应用程序打开时没有登录(iOS在启动时拉出登录视图),我想为用户提供第二次登录的机会.

center ios gkmatchmaker

7
推荐指数
1
解决办法
1637
查看次数

如何测试两个#defines是否与C预处理器相同

我有一个C程序,它具有特定于平台的定义,可以访问低级硬件.在某些平台上,两个宏指向同一个变量,而另一个平台则不同:

 //Platform_One.h
 #define FOO_PORT   (io.portA)
 #define BAR_PORT   (io.portB)

 //Platform_Two.h
 #define FOO_PORT   (io.portC)
 #define BAR_PORT   (io.portC)  //same
Run Code Online (Sandbox Code Playgroud)

我有一些初始化代码根据#defines是否相同而不同.从概念上讲,我喜欢这样的代码:

 callback_struct_t callbacks[] = {
 #if FOO_PORT == BAR_PORT           //unfortunately invalid
     {&FOO_PORT, handle_foo_bar_func},
 #else
     {&FOO_PORT, handle_foo_func},
     {&BAR_PORT, handle_bar_func},
 #endif          
      {0,0}
 };
Run Code Online (Sandbox Code Playgroud)

如果两个任意宏具有相同的定义,是否有可靠的方法在编译时进行测试?

c c-preprocessor

7
推荐指数
1
解决办法
602
查看次数

如何从WAV样本数据中提取频率?

我正在用c开发一个应用程序来读取简单的PCM WAV文件.我的问题是,我应该如何解释数据块中的样本,以便我可以提取样本的频率?

给定WAV示例,原始数据如何表示频率.例如,这个数据块,24 17 1e f3,对于立体声,16位,左声道样本是,0x1724 = 5924d,表示5924Hz?对于签名的样本或人类听不到的频率,怎么可能呢?

c wav pcm riff

6
推荐指数
1
解决办法
2万
查看次数

多种类型的数组

我正在使用数组并需要一些帮助.我想创建一个数组,其中第一个字段是String类型,第二个字段是Integer类型.结果如下:

控制台出来

a  1
b  2
c  3
Run Code Online (Sandbox Code Playgroud)

java arrays

6
推荐指数
2
解决办法
3万
查看次数

是否需要从堆栈中分配C可变长度数组?

从我们的嵌入式系统代码中删除对malloc和calloc的所有调用后,我惊讶地发现malloc仍然被链接.调用图指向一个没有显式*alloc调用的函数,并且没有调用任何可能分配的库函数,比如strdup.
我必须查看生成的程序集才能意识到它是由于包含VLA的内联函数.

我认为VLA必须是堆栈分配的.这个编译器坏了吗?

c heap-memory variable-length-array

6
推荐指数
2
解决办法
1064
查看次数

将BCD转换为二进制的最有效方法

我有下面的代码将32位BCD值(以两个uint half提供)转换为uint二进制值.

提供的值最大为0x9999,最大值为0x99999999.

是否有更好(即更快)的方法来实现这一目标?

    /// <summary>
    /// Convert two PLC words in BCD format (forming 8 digit number) into single binary integer.
    /// e.g. If Lower = 0x5678 and Upper = 0x1234, then Return is 12345678 decimal, or 0xbc614e.
    /// </summary>
    /// <param name="lower">Least significant 16 bits.</param>
    /// <param name="upper">Most significant 16 bits.</param>
    /// <returns>32 bit unsigned integer.</returns>
    /// <remarks>If the parameters supplied are invalid, returns zero.</remarks>
    private static uint BCD2ToBin(uint lower, uint upper)
    {
        uint binVal = 0;

        if …
Run Code Online (Sandbox Code Playgroud)

c# binary bcd

5
推荐指数
3
解决办法
1万
查看次数

如何在基础构造函数中分配基于派生类的大小的数组?

我有一个类的层次结构.基类使用一些可从文件加载的调整参数(并在运行时可重新加载).每个派生类可以添加一些额外的参数.我正在寻找一种方法在基础构造函数中分配一个正确大小的参数数组,这样我就不必在派生类中释放和重新分配.我希望这样的东西,但它不起作用(参数总是有2个元素):

   class Base
   { static int nParms;
     virtual int getNParms() { return nParms;}
     float *parameters;
   public:
     Base() 
     { parameters= new float[this->getNParms()];
       parameters[0] = globalReloadableX;
       parameters[1] = globalReloadableY;
     }
   };
   int Base::nParams =2;

   class Derived : public Base
   { static int nParms;
     virtual int getNParms() { return nParms;}
   public:
     Derived() : Base()
     { parameters[2] = globalReloadableZ;
     }
   }
   int Derived::nParams =3;
Run Code Online (Sandbox Code Playgroud)

我已经看到了这个问题,但那里的解决方案并不适合我.我还尝试在每个类中使参数成为常规数组:

  class Base
  {  float parameters[2]
    ...
  class Derived : public Base
  {  float parameters[3]
    ...
Run Code Online (Sandbox Code Playgroud)

但这使Derived有2个独立的数组.

有任何想法吗?

c++ inheritance static constructor

5
推荐指数
1
解决办法
2220
查看次数

这个O(N*k)排序算法是什么?

在处理" BrainF***的最快排序"时,我发现了这个算法,它是O(N*k),其中k是输入中的最大值.它需要额外的O(N)存储空间.

物理类比是你有N堆令牌.堆栈的高度表示要排序的值.(每个标记代表一点).留出另外N个堆栈的空间.您从每个具有令牌的堆栈的顶部取一个令牌,然后从右到左向新集合中的每个堆栈添加一个令牌,直到您的手为空.重复,直到所有原始堆栈都为空.现在新的集合从左到右排序

在C:

 void sort(int A[], int N)
 {
    int *R = calloc(N,sizeof(int));
    do {
      int i,count=0; 
      for (i=0;i<N;i++) if A[i] { count++; A[i]--;}
      for (i=0;i<count;i++) R[i]++;
    } while (count);
    memcpy(A,R,N);  //A is now sorted descending.
    free(R);
 }
Run Code Online (Sandbox Code Playgroud)

这个算法有名字吗?它似乎类似于珠子排序,但我不认为它是完全相同的.

sorting algorithm identify

5
推荐指数
1
解决办法
936
查看次数

如何取消USSD需要回复

我将诺基亚设备连接到PC

这是我用来发送USSD命令的代码:

Port.Write("AT+CUSD=0,\"*147*1*#\",15\r\n");

它工作正常,但它显示选择服务的选项.我想要的是停止它或从该消息退出(退出).我可以通过手机按取消选项,但我怎么能用C#做呢?

c# nokia at-command

5
推荐指数
1
解决办法
1632
查看次数