小编Arg*_*yll的帖子

在Windows x64中运行Cython - 致命错误C1083:无法打开包含文件:'basetsd.h':没有这样的文件或目录

我一直在尝试在我的Window 7系统上安装Cython for Python 2.7.特别是,我更喜欢64位的所有内容.(如果你想知道,我需要Cython,因为Cython是我需要另一个软件包进行专门的数值分析所需的组件之一.而x64可能是存储大型数据集的一个优势.)

所以我从官方网站下载了x64 Python 2.7.来自Christoph Gohlke的Cython.当然,Python 2.7的amd64版本.在我安装之前,我将Python 2.7添加到注册表中,其中.reg包含Joe DF的答案中的文件.之后,我从这里安装了Visual C++编译器(我认为它不起作用)和这里(但是应该这样).在这一点上,我有我的C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin目录中所有的vcvars32.bat,vcvars64.bat,vcvars86_amd64.bat,vcvarsx86_ia64.bat.我跑了vcvars64.bat,没有错误信息.

随后,我按照此页面创建了一个"hello world"测试文件.

然后,我收到了这个错误.

...\Tests>python setup.py build_ext --inplace
running build_ext
building 'hello' extension
error: Unable to find vcvarsall.bat
Run Code Online (Sandbox Code Playgroud)

所以我心想:嗯,Cython找不到那个文件,因为它不存在.(我搜索我的整个它的硬盘.)所以我复制vcvars64.bat...\VC\bin\VC,改变了名称vcvarsall.bat.现在vcvarsall错误消失了.而且......自然会出现一个新的错误.

...\Tests>python setup.py build_ext --inplace
running build_ext
building 'hello' extension
C:\Program Files (x86)\Microsoft …
Run Code Online (Sandbox Code Playgroud)

python windows cython python-2.7 python-extensions

25
推荐指数
3
解决办法
4万
查看次数

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

有没有办法获取在Matlab中运行的本地函数的名称?

有没有办法获取在Matlab中运行的本地函数的名称?

注意:mfilename返回.m文件的名称,而不是本地函数的名称.

matlab

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

如何最好地构造一个矩阵,其元素正是它们在Matlab中索引的索引或函数?

在Matlab中构造一个元素正好是它们的索引的矩阵的最佳方法是什么?


编辑:这个问题的现有答案适用于如何构建一个矩阵,其元素是其索引的函数.所以我把它添加到问题标题中.


格式可以是以矢量为元素的矩阵,也可以是每个存储一个索引的两个矩阵.

最后,我想创建一个矩阵,其元素是其索引的函数.因此非常感谢一种有效的方法(但可能不同).对效率的任何评论都受到欢迎.

对于我的应用程序,矩阵的大小往往很大(最小数百平方).因此,利用原生Matlab函数的方法可能比for/while循环要好得多.

例如,对于大小为[2 2]的矩阵,我想制作其中一个

IND = 
[1 1]  [1 2]
[2 1]  [2 2]
Run Code Online (Sandbox Code Playgroud)

要么

X = 
1 1
2 2
Y =
1 2
1 2
Run Code Online (Sandbox Code Playgroud)

最后,我希望做类似的事情

matrixIneed = arrayfun(@(s)..., IND)
Run Code Online (Sandbox Code Playgroud)

其中s是大小为2的向量,或

matrixIneed = arrayfun(@(i,j)..., X,Y)
Run Code Online (Sandbox Code Playgroud)

后者是优选的.


编辑:关于已接受答案的说明.

我已经接受了安德鲁的回答,因为它对我来说很直观,代码似乎很快(至少对我来说).

如果你曾经谷歌这个问题的答案,你可能会像我一样关注性能.(否则,如果不是最佳实践,任何人都可以想到双循环来完成任务.)

如果是这样,建议您检查对安德鲁的评论reshape()功能,罗迪的有关性能的答案meshgrid()loops.

尽管如此,thewaywewalk的解决方案meshgrid()是学习该meshgrid()功能的有用示例.它在许多其他Matlab函数中很有用.

Jigg的repmat()解决方案也可以为您提供帮助.

matlab matrix

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

如何在 Matlab 的 system() 命令中包含双引号

我需要将文件名作为输入传递给包含空格的 powershell 命令。因此我希望包含双引号。

然而,当将参数传递给 powershell 时,Matlab 会“吃掉”输入中的所有双引号system()

例如,请注意下面的示例如何具有相同的输出。

>> system('powershell.exe echo a c','-echo')
a 
c 
ans =
     0
>> system('powershell.exe echo "a c"','-echo')
a 
c 
ans =
     0
>> system('powershell.exe echo ""a c""','-echo')
a 
c 
ans =
     0
>> system(['powershell.exe echo ',char(34),'a c',char(34)],'-echo')
a 
c 
ans =
     0
Run Code Online (Sandbox Code Playgroud)

echo "a c"powershell 中的实际输出a c位于一行中。换行仅在没有双引号的情况下发生。

只是为了实验,我也尝试过""a c"",预期输入与更改行,a,更改行,c 相同。随着返回,似乎所有双引号都被 Matlab 活活“吃掉”了。

使用时如何恢复双引号system()

windows powershell matlab cmd windows-10

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

如何仅使用本机公式了解 Excel 或 Google 电子表格中列中的第一个空白单元格

假设A2、A3、A4已被填充。A5、A6 为空。A7-10已满。

有没有办法知道A5是A2之后的第一个空白单元格?

例如,

A1 | =sum(...)
A2 | 3
A3 | 4
A4 | 1
A5 |  
A6 | =sum(...)  
A7 | 2
A8 | 5
A9 | 7
A10| 10
Run Code Online (Sandbox Code Playgroud)

我们可以使用哪一个公式来替换“...”,以便对下面的单元格求和直到下一个空白单元格?IE。A1 上的公式可以通过复制粘贴sum(A2:A4)在 A6 上重复使用吗?sum(A7:A10)

这是我失败尝试的故事。

所以起始行很容易得到。只要放进去A2。对于最后一行,Google 电子表格并不等同""于空单元格。所以sum(A2:index(match("",A2:A)))不会起作用。

isblank()FALSE无论内容如何,​​使用数组输入都会给出单个输出。所以sum(A2:index(match(TRUE,isblank(A2:A))))不会起作用。

我该怎么做才能让它发挥作用?

excel google-sheets

5
推荐指数
2
解决办法
7129
查看次数

如何使用冒号运算符将半整数序列压缩为字符串表达式?(如何将列表转换为字符串)

Matlab 中是否有内置函数将半整数序列压缩为带有冒号运算符的表达式?

例如,[1:4,5:.5:7]

1, 2, 3, 4, 5, 5.5, 6, 6.5, 7
Run Code Online (Sandbox Code Playgroud)

给定一个 double 数组,例如[1, 2, 3, 4, 5, 5.5, 6, 6.5, 7],是否有一种方便的方法将其转换回[1:4,5:.5:7](或同样有效)[1:5,5.5:.5:7]作为字符串?

arrays matlab

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

如何在 Google Sheet 的 App Script 中创建数组的真正新副本?

我在 Google Sheet 中的 App Script 遇到以下问题。

我想在我的工作表中基于表格制作一行的不同副本。我想做类似的事情

input1=[[1,2,"a"]];
input2=[[4,5,"b"],[7,8,"c"]];
function (input1,input2) {
   \\ input# is a row, ie. an array with single element, which is another array
   \\ The rows input# represent are of equal length

   out=[];
   copy1=input1[0];//copy1 is a reference to input1[0]
   copy2=input1[0];//copy2 is a reference to input1[0]
   for (i=0;i<input1.length,i++) {//input1.length is 1
       copy1[i]+=input2[0][i];
       copy2[i]+=input2[1][i];
   }
   out.push(copy1,copy2);//copy1=[5,2,a] copy2=[8,2,a]
   return out
}
Run Code Online (Sandbox Code Playgroud)

我希望out看起来像

out=[[5,7,"ab"],[8,10,"ac"]];//[[5,2,a],[8,2,a]]
Run Code Online (Sandbox Code Playgroud)

但事实并非如此。输出看起来像每当我修改copy1或 时copy2,它input1本身就被修改了。

这里有什么问题?如何创建一个新的数组变量,将其值分配为与现有数组相等并修改新数组而不更改旧数组?输入数组的元素(元素)由混合数字和字符串组成是否可以?

arrays variables google-sheets google-apps-script

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

为什么nargout返回-1?在这种情况下如何获得正确的函数输出数量?

为什么nargout在这种情况下返回-1?

function test

fun=@(a)helper_fun(a,2);

[x,y]=fun(1);
x,  % 1
y,  % 2
nargout(fun),   % -1

end

function [c,d] = helper_fun(a,b)

c=a;
d=b;

end
Run Code Online (Sandbox Code Playgroud)

是否有其他方法可以提取 的正确数量的输出变量fun

我希望在一个作为function_handle可选变量的函数中强加语法检查,这个工件迫使我要么改变我的函数的外观,要么不检查输出的数量。

matlab function-handle

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

从另一个 Apps Script 项目运行 Apps Script Web App 时如何以编程方式进行身份验证

我是 Apps 脚本的新手,并试图了解在一个帐户中使用另一个帐户运行/触发脚本的基础知识。只是警告:我想在用户访问脚本而不是拥有脚本的用户的情况下运行脚本 - 以便将运行时间分配给访问的用户。

但是,我遇到了以下问题。


从一个测试电子表格开始,共享设置为任何有链接的人都可以编辑,脚本项目页面中的以下代码:

function doPost(e){
  var sheet = SpreadsheetApp.openById('1tWV6ELJEGkWkSXvdf9kQemvH-tDVTx0od4JHht2ZBeU');
  var tab = sheet.getSheetByName('ref');
  tab.getRange(1,1).setValue(new Date());
  return ContentService.createTextOutput(0)
}

function doGet(e){
  return doPost(e)
}
Run Code Online (Sandbox Code Playgroud)

并将项目发布为 Web 应用程序,执行设置为用户访问和为任何人启用访问权限。在浏览器中手动输入以下链接会按预期用当前时间填充单元格 A1,页面显示“0”,

https://script.google.com/macros/s/AKfycbwNhYg1BRKi38pNf_z0peGuYt6gsqvauCvo-eiGgCYJJk4QDpjm/exec
Run Code Online (Sandbox Code Playgroud)

如果我在仍然使用创建测试电子表格的帐户登录的情况下输入链接。

如果我在未登录 GSuite 的情况下使用其他浏览器输入链接,则需要登录,这也符合预期。毕竟,每次部署 Web 应用程序时,都需要一个 G Suite 帐户来运行脚本。

但是,当我尝试使用不同的 GSuite 帐户和 Apps 脚本项目触发脚本时,我仍然遇到登录页面和其他问题。在......之外

function test1(){
  const scriptURL='https://script.google.com/macros/s/AKfycbwNhYg1BRKi38pNf_z0peGuYt6gsqvauCvo-eiGgCYJJk4QDpjm/exec';  
  var response = UrlFetchApp.fetch(scriptURL)
  Logger.log(response.getContentText())
}

function test2(){
  const scriptURL='https://script.google.com/macros/s/AKfycbxay75fTBt3doTyMFUPK0-GpK9hMZ4hVkYdiwYUBMhPfEN6hUJH/exec';  
  var response = UrlFetchApp.fetch(scriptURL, {
    method:'POST',
    payload:'nothing'
  });  
  Logger.log(response.getContentText())
}

function test3() {
  var sheet = SpreadsheetApp.openById('AKfycbwNhYg1BRKi38pNf_z0peGuYt6gsqvauCvo-eiGgCYJJk4QDpjm');
  Logger.log(sheet.getName());
} …
Run Code Online (Sandbox Code Playgroud)

web-applications google-sheets google-apps-script

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

如何在 Matlab 中从有序双精度数组中删除元素子集

如何在Matlab中从双精度数组中删除元素子集?数组是有序的并且是一维的。

\n

例如,给定

\n
A=[1,3,5,6,7];\na=[3,6];\n
Run Code Online (Sandbox Code Playgroud)\n

欲望

\n
A_a=[1,5,7];\n
Run Code Online (Sandbox Code Playgroud)\n

如果a是标量,我可以做A_a=A(A~=a)a如果不是标量,它如何工作?

\n

我对 na\xc3\xafve 循环的担忧A_a=A(A~=a(i))是,似乎对于每个元素a(i),都会对 中的每个元素进行比较A,这忽略了两个数组中的基本顺序。

\n

matlab

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

MATLAB在函数中禁止将disp()实例放入命令行

在函数中,我有一些disp()实例来帮助跟踪长计算过程的进度.

例如,

function myfun(inputs)
    ...
    disp('Step i finished')
    ...
end
Run Code Online (Sandbox Code Playgroud)

在其他一些用法中myfun,没有disp()消息更方便.有没有办法在命令行中禁止消息'Step i finished'而不添加新代码或使用该eval()函数?

注意:eval()众所周知,对于任何严肃的计算都太慢了.

matlab

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