标签: wolfram-mathematica

如何将每个循环中的数据存储到数组或表格中?

For[n = 1, n < 6, n = n + 1,
   For[m = 1, m < 6, m = m + 1, abc = doc[[n]];
   kk = doc[[m]];
   v =vector[abc, kk]; 
   vl = VectorLength[v]]]
Run Code Online (Sandbox Code Playgroud)

我想将每个循环中的数据存储到数组或表格中.我怎样才能做到这一点?

wolfram-mathematica

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

在Mathematica中创建一个"视觉噪声矩阵"

为了避免在呈现刺激后出现"视网膜持续性",我需要创建一个视觉噪声掩模.

在此输入图像描述

这适用于具有尺寸的屏幕,像素为:1280*960

我相信我可以随机(统一)为像素分配灰色阴影,但我的尝试却失败了.

感谢您的关注.

wolfram-mathematica mask noise

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

为什么在Mathematica中更改集成顺序会产生不同的结果?

以下是我的Mathematica计划的两个陈述.

Print[ExpandAll[Chop[Integrate[Resi*Cos[7*1*\[Theta]]*Sin[(1*Pi*x)/L], {\[Theta],    
     0,2*Pi},{x,0, L}], 10^-6]]];
Run Code Online (Sandbox Code Playgroud)

这条线给了我输出

1043.84 A[1,7][t]-115072. A[1,0][t] A[1,7][t]+112.933 A[1,0][t]^2 A[1,7][t]+12415.3 A[1,7][t]^3-1327.67 A[1,7][t] A[1,14][t]+387.315 A[1,0][t] A[1,7][t] A[1,14][t]+50249.8 A[1,7][t] A[1,14][t]^2+12415.3 A[1,7][t] B[1,7][t]^2-1327.67 B[1,7][t] B[1,14][t]+387.315 A[1,0][t] B[1,7][t] B[1,14][t]+50249.8 A[1,7][t] B[1,14][t]^2+0.000108481 (A[1,7]^\[Prime]\[Prime])[t]
Run Code Online (Sandbox Code Playgroud)

而当我颠倒整合的顺序

Print[ExpandAll[Chop[Integrate[Resi*Cos[7*1*\[Theta]]*Sin[(1*Pi*x)/L], {x, 0, L}, {\[Theta], 0, 2*Pi}], 10^-6]]];
Run Code Online (Sandbox Code Playgroud)

我得到以下输出

 2087.69 A[1,7][t]-230144. A[1,0][t] A[1,7][t]+225.866 A[1,0][t]^2 A[1,7][t]+24830.6 A[1,7][t]^3-2655.34 A[1,7][t] A[1,14][t]+774.631 A[1,0][t] A[1,7][t] A[1,14][t]+100500. A[1,7][t] A[1,14][t]^2+24830.6 A[1,7][t] B[1,7][t]^2-2655.34 B[1,7][t] B[1,14][t]+774.631 A[1,0][t] B[1,7][t] B[1,14][t]+100500. A[1,7][t] B[1,14][t]^2+0.000216962 (A[1,7]^\[Prime]\[Prime])[t]
Run Code Online (Sandbox Code Playgroud)

整合的顺序无关紧要.那为什么输出不同?请注意,第一个错误输出只是第二个(正确)输出的一半.我问这个是因为给我正确答案的顺序花了很多时间.我的程序中有很多这样的积分.

表达式Resi是一个巨大的术语,但让我给你一小部分

  1754.2 Sin[(\[Pi] x)/200] A[1, 0][t] + 
  6.64531 Cos[7 \[Theta]] Sin[(\[Pi] x)/200] …
Run Code Online (Sandbox Code Playgroud)

integration wolfram-mathematica

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

Mathematica中磁盘像素的协方差矩阵

我想计算下面图像的协方差矩阵.基于像素.这是将磁盘的每个黑像素视为向量.

虽然下面的单位是厘米,但我使用的屏幕上每厘米有32个像素.

在协方差矩阵计算本身之前,我无法弄清楚获得所有像素矢量的方法.

在此输入图像描述

frmXY = {{6.59, 1.59}, {33.41, 28.41}};

stim = {{10.85, 21.91, 0.97}, {16.8, 5.26, 0.97}, {11.78, 7.11, 0.97}, 
        {12.64, 14.13, 0.97`}, {20.24, 16.16, 0.97}, {29.51, 8.06,1.53}, 
        {22.42, 5.78, 1.53}, {27.13, 16.47, 1.53}}


Graphics[{EdgeForm[Thick],White, Rectangle @@ frmXY, Black,
          Disk @@@ (stim /. {a_, b_, c_} :> {{a, b}, c})}, ImageSize -> 300]
Run Code Online (Sandbox Code Playgroud)

wolfram-mathematica image matrix covariance

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

如何在列中导出Mathematica数据

我对Mathematica很新.我想将它用作gnuplot的数据源(我知道Mathematica也可以绘图),它使用的文件格式包含列中的数据和每行上每列之间的空格.像这样:

x y
1 123
2 234
4 456
Run Code Online (Sandbox Code Playgroud)

等等

我来创建这个表达式:

{CountryData["G8"], CountryData[#, "GDP"] & /@ CountryData["G8"]} // Transpose // Grid
Run Code Online (Sandbox Code Playgroud)

这就像我想要的那样创建了一个表.现在,我如何将其导出到一个文件而不是矩阵,而是像Mathematica中出现的那样?

wolfram-mathematica

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

Mathematica评估控制和表达

我正在使用的表达式太复杂,无法完全进入此处,但我已经包含了一个简单的示例,突出了我遇到的问题.我希望有人有足够的编程毅力来帮助我解决这个问题.让我先说一下我在编程方面几乎没有背景,但我知道Mathematica的基础知识.非常感谢任何和所有的帮助.假设我已经设置了以下功能:

X[x_] := x Log[x]
X[0] := 0
Y[y_] := y Log[y]
Y[0] := 0
Z[z_] := z Log[z]
A[x_, y_, z_] := X[x] + Y[y] + Z[z]

In[7]:= A[x, y, z]

Out[7]= x Log[x] + y Log[y] + z Log[z]

In[8]:= B[x_, y_, z_] := 
 Evaluate[A[x, y, z] - x*D[A[x, y, z], x] - y*D[A[x, y, z], y] - 
   z*D[A[x, y, z], z]]

In[9]:= B[x, y, z]

Out[9]= x Log[x] - x (1 + Log[x]) + y Log[y] - …
Run Code Online (Sandbox Code Playgroud)

evaluation controls expression wolfram-mathematica

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

生成严格对角占优矩阵

有没有办法在Mathematica中生成一个n 严格对角占优的随机n ?我使用以下代码生成随机方阵:

A = RandomReal[{-100, 100}, {1000, 1000}]
Run Code Online (Sandbox Code Playgroud)

编辑:我只需要一种方法来生成一个严格的对角占优矩阵,行随机性并不重要.

wolfram-mathematica matrix

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

将纯函数传递给模块

只是想检查是否可以安全地执行以下操作:

假设我有一个函数'f(x)',它还取决于其他参数.例如,功能a*Exp[ (x-x0)^2/(2*std^2)]

从UI我读这些参数的用户输入值(通过滑块)ax0std,然后我使纯函数变量

 f=Function[{x,a,x0,std}, a*Exp[ (x-x0)^2/(2*std^2)]
Run Code Online (Sandbox Code Playgroud)

以上是在相同的上下文中(在Manipulate控制区域中),当我正在读取用户输入时,然后当用户点击按钮来运行程序时,我调用另一个较低级别的函数来处理这个输入,就像这样

 foo[f,a,x0,std]
Run Code Online (Sandbox Code Playgroud)

然后在foo中,f通过这样的调用来评估一些网格点(x1,x2等等)

 foo[f_,a_,x0,std_]:=Module[{x1,x2...},     
   .....
   f[x1,a,x0,std];
   f[x2,a,x0,std];
   f[x3,a,x0,std]; etc... 
   ....
   ]
Run Code Online (Sandbox Code Playgroud)

请注意,在foo中,只使用x了纯函数的参数,其余的只是为了骑行.

但由于它们没有在foo中使用,我想不要传递所有其他参数a,x0,std.

所以,我改变了纯粹的功能

 f=Function[{x}, a*Exp[ (x-x0)^2/(2*std^2)];
Run Code Online (Sandbox Code Playgroud)

然后像这样叫foo

 foo[f]
Run Code Online (Sandbox Code Playgroud)

然后在里面,我做

 foo[f_]:=Module[{},     
   .....
   f[x1];
   f[x2];
   f[x3]; etc...
   ....
   ]
Run Code Online (Sandbox Code Playgroud)

我测试了这个,它有效.(起初我以为,因为背景是不同的模块内富,我必须通过a,x0,std使用f一起,但我没有给.看来a,x0stdx纯函数内部值保存为全局变量,并通过在纯函数体.

我的问题:您认为上述第二种方法有什么问题吗?我忽视的东西?在我做过的测试中,它到目前为止工作正常.它会使它变得更简单,因为现在我只需要传递纯函数本身,而不是传递用于构建的所有其他参数,因为它们在foo中不需要.

换句话说,我试图在这两个设置之间做出决定:

在此输入图像描述

只是想检查一下.

谢谢

wolfram-mathematica

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

如何从一组2D点绘制2D密度图并显示连接这些顶点的网络

我的问题如下.

目的

在平面上绘制一组2D点,其具有用于为每个点提供强度的函数.

fun(x,y):=x+y
Run Code Online (Sandbox Code Playgroud)

另外,我有一个图表连接这些点.我需要在密度图上显示图形,这绝对是必要的.

问题

不知道怎么做.我搜索了一下Mathematica文档,但我找不到多少.

一些笔记

每当有人找到解决方案时,我也有一个问题.如何在密度图上使用图形功能是不可能的?例如,如果我想在顶点上显示标签,是否可以使用某种参数化解决方案.也许我要求太多,这只是一个小小的注意事项,如果花费太多时间就跳过它.

最后的笔记

我需要2D图.不是3D的.只是2D很好.

wolfram-mathematica mathematica-8

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

WishartDistribution的Inverse [_]和(_)^( - 1)之间的mathematica差异

有谁知道为什么下面的矩阵随机分布产生不同的图?(这是为使用逆Wishart分布采样的一组10x10矩阵中的第一个单元生成PDF的图表;令人惊讶的是,这些图根据执行矩阵逆的方式而有所不同 - 似乎正确的图是通过Inverse [_]获得,为什么?)

基本代码:

   << MultivariateStatistics`;
   Module[{dist, p, k, data, samples, scale, graphics, distribution},
     p = 10;
     k = 13;
     samples = 500;
     dist = WishartDistribution[IdentityMatrix[p], k];
     (* a samples x p x p array *)
     data = Inverse[#] & /@ RandomVariate[dist, samples];
     (* distribution graphics *)
     distribution[i_, j_] := Module[{fiber, f, mean, rangeAll, colorHue},
       fiber = data[[All, i, j]];
       dist = SmoothKernelDistribution[fiber];
       f = PDF[dist];
       Plot[f[z], {z, -2, 2}, 
        PlotLabel -> ("Mean=" <> ToString[Mean[fiber]]), 
        PlotRange -> All]
       ]; …
Run Code Online (Sandbox Code Playgroud)

wolfram-mathematica mathematica-8

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