小编cod*_*tor的帖子

用{}运算符包装函数是'UniformOutput'的有效替换,在cellfun中是false吗?

cellfun用来将函数应用于单元格数组中的每个单元格.

我知道我必须设置'UniformOutput'false每当功能,使得该函数的输出被在一个单元阵列返回的包封返回非标量值.

以下面的单元格数组为例:

C1 = {[1 2 3], [4 5 6]};
Run Code Online (Sandbox Code Playgroud)

C1 有两个单元格,每个单元格包含三个元素的向量:

C1 =

  1×2 cell array

    [1×3 double]    [1×3 double]
Run Code Online (Sandbox Code Playgroud)

如果我想添加1到每个单元格中的内容,我可以定义该函数@(x) x + 1并使用cellfun如下方法应用它:

C2 = cellfun(@(x) x + 1, C1, 'UniformOutput', false);
Run Code Online (Sandbox Code Playgroud)

这非常有效,但请注意,我需要确保将'UniformOutput'其设置false为我之前解释过,否则将引发错误.

然而,看完之后此线程,我意识到,如果我用包功能单元阵列建设运营商{}这样的@(x) {x + 1}话,我并不需要设置'UniformOutput'false.

因此,以下命令将生成与C2不丢弃任何错误相同的结果:

C3 = cellfun(@(x) {x + 1}, C1);
Run Code Online (Sandbox Code Playgroud)

在代码布局方面,我更喜欢这种方法,因为它比前者更紧凑,更简洁,但我不确定这是否总是安全的.


因此我的问题是:

我是否可以始终用函数包装 …

matlab function cell-array

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

QPolarChart的反转轴

我需要修改QPolarChart来创建Satellite SkyPlot

为此,我需要反转径向轴(高程轴),以便将90放置在原点上,将0放置在外圈上。

成员列表中,QValueAxis我找到了method setReverse,这似乎可以满足我的需要。

但是,setReverse(true)在高程轴上进行操作并不会像我期望的那样翻转轴。

那我该如何反转轴?

极坐标图

这是运行此示例所需的最少代码:

#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <QtCharts/QChartView>
#include <QtCharts/QPolarChart>
#include <QtCharts/QValueAxis>
#include <QScatterSeries>

QT_CHARTS_USE_NAMESPACE

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QtCharts::QPolarChart *chart = new QtCharts::QPolarChart();
    chart->legend()->hide();

    QScatterSeries *series = new QScatterSeries();
    for (int i = 0; i < 360; i += 10) {
        series->append(i, i);
    }
    chart->addSeries(series);

    QValueAxis *azimuthAxis = new QValueAxis();
    azimuthAxis->setRange(0, 360);
    azimuthAxis->setTickCount(9);
    azimuthAxis->setLabelFormat("%d");
    azimuthAxis->setLabelsVisible(true);
    chart->addAxis(azimuthAxis, QPolarChart::PolarOrientationAngular);

    QValueAxis …
Run Code Online (Sandbox Code Playgroud)

c++ qt qchart

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

地图的主要和次要刻度?

我创建了下面的地图,它有一个均匀的灰色网格,间隔为1°,对于经线和纬线:

用灰色网格映射

我还希望每隔5°间隔(同时保持1°网格)使经线和平行线变粗和变黑,以便网格线与纬度和经度标签匹配,如下所示:

地图与灰色和黑色网格

我知道MATLAB有标准2D图的主要和次要网格,我过去曾使用它们.但是,据我所知,地图没有此功能.

我认为我想要做的就是通过访问地图对象属性(使用gcmgetm)并为特定子午线和平行子(使用)指定黑色属性来实现setm.也许功能gridmaxesm可以处理这个,但我不确定.

在实践中,我不知道如何做到这一点,因为我没有任何地图经验.我真的很感激你的帮助.

码:

注意:此代码需要Mapping Toolbox.

% Read vector features and attributes from shapefile.
landareas = shaperead('landareas.shp', 'UseGeoCoords', true);

% Define map axes and set map properties.
axesm ('lambert',...
    'MapLonLimit', [-70 10],...
    'MapLatLimit', [30 70],...
    'MapParallels', [38.00555556 71.01111111],...
    'Frame', 'on',...
    'FLineWidth', 1,...
    'Grid', 'on',...
    'GLineStyle', '-',...
    'GLineWidth', 0.1,...
    'GColor', [.7 .7 .7]);

% Display map latitude and longitude data.
geoshow(landareas, 'FaceColor', [1 1 .5], …
Run Code Online (Sandbox Code Playgroud)

matlab plot gridlines geo matlab-figure

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

如何找到当前运行代码的文件扩展名?

MATLAB提供了这个mfilename功能.它返回调用函数的文件的名称,但不幸的是,它返回没有扩展名的文件名.

因此,例如,如果我们有一个文件被调用myfile.m,我们mfilename在文件内部调用,它将返回字符串'myfile'但不返回'myfile.m'

我也看了一下这个fileparts函数,但它没用,因为它只解析你提供的字符串.

我正在开发一段代码,根据文件扩展名有不同的行为.因此,例如,它需要知道文件的扩展名是在运行时.m还是.p运行时.

您可以在此处查看与MATLAB关联的扩展列表.

我该怎么做?

reflection matlab file-extension

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

无法监听 UIAxes 的 YLim 属性

MATLAB 提供了该addlistener函数。

侦听器允许我们跟踪对象属性的变化并对其采取行动。例如,我们可以创建一个非常简单的侦听器,当对象的'YLim'属性axes发生更改时,它将在命令窗口中显示一条消息:

% Example using axes
ax = axes();
addlistener(ax, 'YLim', 'PostSet', @(src, evnt)disp('YLim changed'));
Run Code Online (Sandbox Code Playgroud)

尝试平移轴或放大/缩小,看看会发生什么。这工作正常。

我需要做同样的事情,但使用 anuiaxes代替。

不幸的是,我们似乎不允许这样做。尝试运行以下示例:

% Example using uiaxes
ax = uiaxes();
addlistener(ax, 'YLim', 'PostSet', @(src, evnt)disp('YLim changed'));
Run Code Online (Sandbox Code Playgroud)

它抛出这个错误:

错误使用 matlab.ui.control.UIAxes/addlistener 添加 PostSet 侦听器时,类“matlab.ui.control.UIAxes”中的属性“YLim”未定义为 SetObservable。

我已经阅读了“监听属性值的变化”和“观察属性值的变化”的文章,我了解到必须声明一个属性才能SetObservable被监听:

classdef PropLis < handle
   properties (SetObservable)
      ObservedProp = 1 % <-- Observable Property
   end
end
Run Code Online (Sandbox Code Playgroud)

我试过通过查看UIAxes类定义,edit matlab.ui.control.UIAxes但这是不可能的,因为它是一个P-file。 …

matlab listener observable matlab-figure matlab-app-designer

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

VS Designer总是抛出异常"x属性没有get/set方法"

我遇到了VS Designer的这个问题,无法使用它.它发生的是我正在编辑我的XAML代码,VS Designer会在某些时候抛出异常,使用如下的StackTrace:

InvalidOperationException:属性"MyObject.MyProperty"没有get方法

堆栈跟踪:

at Microsoft.Expression.DesignModel.Metadata.ClotProperty.Exign.GetVolue.Metadata.LetClpertProperty.PeritMetl.MetadataMetl上的Microsoft.Expression.DesignModel.Metadata.ClrPropertyRempleStep.GetValue(Object valueToInspect)中的Microsoft.Expression.DesignModel.Metadata.LocalClrPropertyImplementation.GetValue(Object target).对象&值,ReferenceStep referenceStep在[...]的Microsoft.Expression.DesignModel.Metadata.PropertyReference.PartialGetValue(对象目标,Int32 initialStepIndex,Int32 finalStepIndex)上的,对象目标)

...至少还有50行.

有问题的财产是这样的:

private bool _MyProperty = true;

public bool MyProperty
{
    set
    {
        if (_MyProperty != value)
        {
            // Do a few things here
            this._MyProperty = value;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,这很好用,我的项目中有很多这样的东西,VS以前从未打扰过我.如果我再次尝试关闭并打开VS,它会让我工作一段时间,然后它最终会再次开始抛出这个错误.

我尝试从编译>清洁解决方案清理解决方案,它不起作用.

我真的不知道这里有什么问题.我的意思是,我在2个月前创建了这个属性,为什么VS现在只告诉我?

有没有修复此问题,或者我是否必须在我创建的每个参数中手动添加所有这些无用的get/set方法?

c# wpf windows-runtime visual-studio-2013 windows-phone-8.1

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

Interior.Color属性反转颜色?

我编写了一段代码,允许我检索excel工作簿中的特定单元格的着色颜色.我通过使用MATLAB启动COM服务器actxserver,然后访问该特定Cell对象的Interior Object 的Color属性,成功检索了RGB整数值.然后我获得该整数的等效RGB三元组,因此我可以稍后在MATLAB中使用它进行绘图.

为了测试我的代码是否正常工作,我设计了以下测试:我创建了一个名为colorTest.xlsx8种不同颜色的Excel工作簿:

在此输入图像描述

然后我运行我的MATLAB代码,它提取B列的每个单元格的颜色信息.我应该得到一个带有相同垂直顺序颜色的图和一个带有int值和每种颜色的RGB三元组的表.

然而出乎意料的事情!看看结果:

在此输入图像描述

请注意,从Color属性获取的整数值并不总是与原始单元格的颜色匹配,对于黑色,白色,绿色和洋红色,整数值是正确的,但对于所有其他颜色则不然.例如,您可以看到,对于Excel上的红色,输出int和RGB三元组对应于蓝色.

我在下面的表中添加了正确的结果,以供参考:

Color        Int         R G B
--------     --------    -----
Black               0    0 0 0
White        16777215    1 1 1
Red          16711680    1 0 0
Green           65280    0 1 0
Blue              255    0 0 1
Cyan            65535    0 1 1
Magenta      16711935    1 0 1
Yellow       16776960    1 1 0
Run Code Online (Sandbox Code Playgroud)

我使用RGB Int计算器为每种颜色获得了正确的整数值.

如果我们比较两个表,我们可以推断红色和蓝色通道是反转的.

代码:

调用我执行以运行测试的函数getCellColor.看看代码:

function getCellColor()
clear all;
clc;

% Excel …
Run Code Online (Sandbox Code Playgroud)

excel matlab

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

按给定模式对以下坐标进行排序:

我有以下图像:

图像

图像中白色斑点对应的坐标根据x坐标的递增值进行排序。但是,我希望他们遵循以下模式:

所需图像

(从左下角到左上角呈之字形。)

有什么线索我该怎么做吗?任何有关该算法的线索将不胜感激。

坐标集如下:

[46.5000000000000,104.500000000000]
[57.5000000000000,164.500000000000]
[59.5000000000000,280.500000000000]
[96.5000000000000,66.5000000000000]
[127.500000000000,103.500000000000]
[142.500000000000,34.5000000000000]
[156.500000000000,173.500000000000]
[168.500000000000,68.5000000000000]
[175.500000000000,12.5000000000000]
[198.500000000000,37.5000000000000]
[206.500000000000,103.500000000000]
[216.500000000000,267.500000000000]
[225.500000000000,14.5000000000000]
[234.500000000000,62.5000000000000]
[251.500000000000,166.500000000000]
[258.500000000000,32.5000000000000]
[271.500000000000,13.5000000000000]
[284.500000000000,103.500000000000]
[291.500000000000,61.5000000000000]
[313.500000000000,32.5000000000000]
[318.500000000000,10.5000000000000]
[320.500000000000,267.500000000000]
[352.500000000000,57.5000000000000]
[359.500000000000,102.500000000000]
[360.500000000000,167.500000000000]
[366.500000000000,11.5000000000000]
[366.500000000000,34.5000000000000]
[408.500000000000,9.50000000000000]
[414.500000000000,62.5000000000000]
[419.500000000000,34.5000000000000]
[451.500000000000,12.5000000000000]
[456.500000000000,97.5000000000000]
[457.500000000000,168.500000000000]
[465.500000000000,62.5000000000000]
[465.500000000000,271.500000000000]
[468.500000000000,31.5000000000000]
[498.500000000000,10.5000000000000]
[522.500000000000,105.500000000000]
[524.500000000000,32.5000000000000]
[533.500000000000,60.5000000000000]
[534.500000000000,11.5000000000000]
[565.500000000000,164.500000000000]
[576.500000000000,33.5000000000000]
[581.500000000000,10.5000000000000]
[582.500000000000,67.5000000000000]
[586.500000000000,267.500000000000]
[590.500000000000,102.500000000000]
[622.500000000000,10.5000000000000]
[630.500000000000,32.5000000000000]
[646.500000000000,58.5000000000000]
[653.500000000000,94.5000000000000]
[669.500000000000,8.50000000000000]
[678.500000000000,167.500000000000]
[680.500000000000,31.5000000000000]
[705.500000000000,57.5000000000000]
[719.500000000000,9.50000000000000]
[729.500000000000,271.500000000000]
[732.500000000000,33.5000000000000]
[733.500000000000,97.5000000000000]
[757.500000000000,11.5000000000000]
[758.500000000000,59.5000000000000]
[778.500000000000,157.500000000000]
[792.500000000000,31.5000000000000]
[802.500000000000,10.5000000000000]
[812.500000000000,94.5000000000000]
[834.500000000000,59.5000000000000]
[839.500000000000,30.5000000000000]
[865.500000000000,160.500000000000]
[866.500000000000,272.500000000000]
[885.500000000000,58.5000000000000]
[892.500000000000,97.5000000000000]
[955.500000000000,94.5000000000000]
[963.500000000000,163.500000000000]
[972.500000000000,265.500000000000]
Run Code Online (Sandbox Code Playgroud)

sorting algorithm matlab

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

围绕其中心旋转 MapQuickItem 中的图像

我使用 aMapQuickItemImageassourceItem在 QML 上显示用户的位置Map

的文档MapQuickItem指出:

当显示在屏幕上时,设置的坐标将与所包含项目的左上角对齐。

anchorPoint属性提供了一种方法,通过设置项目将偏移的像素数,将坐标与项目的其他部分对齐,而不仅仅是左上角。

一个简单的思考方法是注意 anchorPoint项目本身上的点是coordinate显示时将与给定对齐的点。

所以我设置了锚点来匹配图像的中心,如下所示:

anchorPoint.x: img.width/2
anchorPoint.y: img.height/2
Run Code Online (Sandbox Code Playgroud)

这会将箭头的中心置于用户位置的正上方。到现在为止还挺好。

现在,我希望围绕其中心旋转图像以使用 rotation属性。

Item transformOrigin物业的文件指出:

有九个变换原点可用,如下图所示。默认的变换原点是Item.Center

变换原点

因此,我希望图像围绕其中心旋转,因为这是默认行为。

但不幸的是,现实却大不相同。围绕图像的左上角应用旋转,将箭头从用户的位置移开,如下图所示:

旋转 MapQuickItem

  • 我对文档的解释是错误的吗?
  • 如何使图像围绕其中心旋转?

主程序

#include <QGuiApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

主文件

import QtQuick 2.0
import QtQuick.Window 2.0
import QtLocation 5.6
import QtPositioning 5.6

Window {
    width: …
Run Code Online (Sandbox Code Playgroud)

qt qml

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

两种不同签名的一种方法

我有两个完全相同的方法,但是一个接受一个PaintEventArgs类参数,而另一个接受一个PrintPageEventArgs类参数.这迫使我写出两种不同的方法,这些方法对于这种微小的差异往往有点过分.

public static void DoAllTasks_Panel(PaintEventArgs e)
{
    // Commands...
}

public static void DoAllTasks_Print(PrintPageEventArgs e)
{
    // Commands...
}
Run Code Online (Sandbox Code Playgroud)

我试图使用EventArgs类参数将它们合并到单个方法中但没有成功,如下所示:

public static void DoAllTasks(EventArgs e)
{
    // Commands...
}
Run Code Online (Sandbox Code Playgroud)

是否有可能将它们合并为一个方法?

c#

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

Matlab:你如何实现这笔金额?

我需要实现以下内容:

x_i = e ^ (-1 - sum (y_j * A_ji))
Run Code Online (Sandbox Code Playgroud)

其中i = 1..10,j = 1..5A是5×10矩阵(随机生成的).

我尝试使用,symsum但它给了我一个索引错误.有人可以帮我弄清楚如何实现这个?

matlab sum

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