我一直在尝试在我的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) 有没有办法获取在Matlab中运行的本地函数的名称?
注意:mfilename返回.m文件的名称,而不是本地函数的名称.
在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()解决方案也可以为您提供帮助.
我需要将文件名作为输入传递给包含空格的 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()?
假设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))))不会起作用。
我该怎么做才能让它发挥作用?
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]作为字符串?
我在 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本身就被修改了。
这里有什么问题?如何创建一个新的数组变量,将其值分配为与现有数组相等并修改新数组而不更改旧数组?输入数组的元素(元素)由混合数字和字符串组成是否可以?
为什么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可选变量的函数中强加语法检查,这个工件迫使我要么改变我的函数的外观,要么不检查输出的数量。
我是 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) 如何在Matlab中从双精度数组中删除元素子集?数组是有序的并且是一维的。
\n例如,给定
\nA=[1,3,5,6,7];\na=[3,6];\nRun Code Online (Sandbox Code Playgroud)\n欲望
\nA_a=[1,5,7];\nRun Code Online (Sandbox Code Playgroud)\n如果a是标量,我可以做A_a=A(A~=a)。a如果不是标量,它如何工作?
我对 na\xc3\xafve 循环的担忧A_a=A(A~=a(i))是,似乎对于每个元素a(i),都会对 中的每个元素进行比较A,这忽略了两个数组中的基本顺序。
在函数中,我有一些disp()实例来帮助跟踪长计算过程的进度.
例如,
function myfun(inputs)
...
disp('Step i finished')
...
end
Run Code Online (Sandbox Code Playgroud)
在其他一些用法中myfun,没有disp()消息更方便.有没有办法在命令行中禁止消息'Step i finished'而不添加新代码或使用该eval()函数?
注意:eval()众所周知,对于任何严肃的计算都太慢了.
matlab ×7
arrays ×2
windows ×2
cmd ×1
cython ×1
excel ×1
importrange ×1
matrix ×1
powershell ×1
python ×1
python-2.7 ×1
variables ×1
windows-10 ×1