小编exc*_*aza的帖子

如何检查Matlab中是否存在文件?

if exist('JaccardDistance', 'file')==1
    load('JaccardDistance');
else
    % Do things
end
Run Code Online (Sandbox Code Playgroud)

文件JaccardDistance位于执行此代码的同一文件夹中.问题是"else"部分总是被执行,这意味着它没有意识到文件JaccardDistance存在.我究竟做错了什么?提前致谢.

matlab

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

将Numpy Structure Array保存到*.mat文件

numpy.loadtext用来从CSV数据文件生成一个结构化的Numpy数组,我希望将其保存到一个MAT文件中给那些比Python更熟悉MATLAB的同事.

样例:

import numpy as np
import scipy.io

mydata = np.array([(1, 1.0), (2, 2.0)], dtype=[('foo', 'i'), ('bar', 'f')])
scipy.io.savemat('test.mat', mydata)
Run Code Online (Sandbox Code Playgroud)

当我尝试scipy.io.savemat在此数组上使用时,会抛出以下错误:

Traceback (most recent call last):
  File "C:/Project Data/General Python/test.py", line 6, in <module>
    scipy.io.savemat('test.mat', mydata)
  File "C:\python35\lib\site-packages\scipy\io\matlab\mio.py", line 210, in savemat
    MW.put_variables(mdict)
  File "C:\python35\lib\site-packages\scipy\io\matlab\mio5.py", line 831, in put_variables
    for name, var in mdict.items():
AttributeError: 'numpy.ndarray' object has no attribute 'items'
Run Code Online (Sandbox Code Playgroud)

我是一个Python新手(充其量),但我假设这是因为savemat设置为处理dicts并且Numpy的结构化数组的结构不兼容.

我可以通过将数据拉入dict来解决此错误:

tmp = {}
for varname in mydata.dtype.names:
    tmp[varname] = mydata[varname]

scipy.io.savemat('test.mat', …
Run Code Online (Sandbox Code Playgroud)

numpy scipy python-3.x

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

以不同颜色呈现直方图 - matlab

我试图呈现两个直方图,我希望它们中的每一个都有不同的颜色.让我们说一个红色和一个蓝色.到目前为止,我把改变了两者的颜色,但只改为相同的颜色.
这是代码

close all  
b=-10:1:10;
x=randn(10^5,1);  
x=(x+5)*3;  
y=randn(1,10^5);  
y=(y+2)*3;  
hist(x,100)  
hold on   
hist(y,100);  

h = findobj(gca,'Type','patch');   
set(h,'FaceColor','r','EdgeColor','w')  
%the last two lines changes the color of both hists.
Run Code Online (Sandbox Code Playgroud)

statistics matlab histogram

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

第一次使用python函数

对不起这个非常愚蠢的问题.我是python中的自学初学者,我遇到使用函数并调用它的问题.我来自MATLAB背景,所以我试图做类似的事情.

使用的工具:Linux环境中的Python 2

作为测试,我创建了一个函数,我在名为prthis.py的文件中调用了prthis(用于"打印此").这个函数只需要一个数字作为输入,然后输出两个数字,分别是同一个数字和它的正方形.我这样定义:

#----------------------------------------
# content of the file prthis.py
#----------------------------------------

def prthis(x):

    y=x*x

    nb=x 

    return (y, nb)
#------------------------------------------
Run Code Online (Sandbox Code Playgroud)

然后,在python提示符下,我尝试调用新创建的prthis函数,我这样做:

>>> import prthis

>>> g,t = prthis(7)
Run Code Online (Sandbox Code Playgroud)

导入似乎是成功的,但是当我在两个输出变量上尝试函数g和t时,如上所述,我得到以下错误消息:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'module' object is not callable
Run Code Online (Sandbox Code Playgroud)

也许我对我的想法进行过多的MATLAB化.有没有人有关于如何处理这个问题的建议?

PS:这是我在stackexchange上的第一个问题,所以请你告诉我如何感谢/接受其他用户的有价值的答案?我不希望那些想要帮助的人感到忘恩负义.

python

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

创建一个没有小数的矩阵

我需要在MATLAB中创建一个没有浮点值的矩阵.例如,我创建了以下矩阵a:

a = 

    1.0000         0         0         0   25.0000
    1.0000         0    1.0000         0   50.0000
    1.0000         0         0    1.0000   50.0000
         0         0         0         0   50.0000
         0         0         0         0   50.0000
         0    1.0000    1.0000         0   83.3333
Run Code Online (Sandbox Code Playgroud)

但我想要以下矩阵:

a =

    1         0         0         0        25
    1         0         1         0        50
    1         0         0         1        50
    0         0         0         0        50
    0         0         0         0        50
    0         1         1         0        83
Run Code Online (Sandbox Code Playgroud)

matlab matrix

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

为什么有两个匹配.*正则表达式?

为什么以下生成两个匹配项,因此"xx"作为输出:

"Hello" -Replace '.*','x'
Run Code Online (Sandbox Code Playgroud)

虽然这只是生成一个匹配,因此只"x"在输出中:

"Hello" -Replace '^.*','x'
Run Code Online (Sandbox Code Playgroud)

我试图了解正则表达式的细微差别会导致第一个中的两个匹配?

您可以将其添加到https://regex101.com,它还会报告第一场比赛的两场比赛,"Hello"第二场比赛是""

regex powershell

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

网络驱动器修剪文件路径的系统目录调用

由于无法提供完全可复制的示例而预先致歉,并不是每个人都将拥有网络驱动器来进行试验。

我具有用于执行数据缩减的处理功能,我们的数据存储在网络驱动器上。在今天早上进行调试时,我发现了一些奇怪的事情(对我而言),并且很好奇为什么Windows(Win7,64位)会以这种方式运行。我的Google-fu被击败了。

举例来说,假设我在 \\mynetworkshare

\\mynetworkshare\testdata\a
\\mynetworkshare\testdata\b
\\mynetworkshare\testdata\c
\\mynetworkshare\testdata\c\day1
\\mynetworkshare\testdata\c\day2
Run Code Online (Sandbox Code Playgroud)

随着somedatafile_n.abc在每个的day文件夹中。

c在这种情况下,我的函数将解析用户指定的文件夹,并查找与过滤器匹配的所有数据文件:

searchpath = '\\mynetworkshare\testdata\c'
oldpath = cd(searchpath); % cd to data directory for simpler dir call
[~, filenames] = system('dir /S /B somedatafile_*.abc');
filelist = regexp(filenames, '(.:\\[\w\-\\. ]+\.\w+)', 'match'); % Split filenames
cd(oldpath);
Run Code Online (Sandbox Code Playgroud)

这将返回一个包含文件名的单元格数组:

Z:\day1\somedatafile_1.abc
Z:\day1\somedatafile_2.abc
Z:\day2\somedatafile_1.abc
Run Code Online (Sandbox Code Playgroud)

但是,这些不是与低级别I / O一起使用的有效路径:

Error using textscan
Invalid file identifier. Use fopen to generate a valid file identifier.
Run Code Online (Sandbox Code Playgroud)

应该注意的是,如果我安装网络驱动器并改用该路径,则此功能可以正常运行:

searchpath = 'H:\testdata\c'
oldpath = cd(searchpath); % cd to data …
Run Code Online (Sandbox Code Playgroud)

matlab

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

翻页的反函数

如果我flipud()在加密期间使用函数,我需要在解密期间使用与其相反的函数.

是否有任何函数或代码片段flipud()在MATLAB 中执行函数的逆运算?

encryption matlab image

-4
推荐指数
2
解决办法
119
查看次数