在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

用GPT寫個mexFunction

MATLAB ? 來源:MATLAB ? 2024-01-25 10:10 ? 次閱讀

| 作者:老朽路人甲

最近有位用戶想在 MATLAB 里用 m 代碼實現一個將某個圖形窗口最大化顯示的功能,問我們有沒有 MATLAB 函數支持這個。

大伙兒找了一圈沒找到,老朽就建議不如用 C 寫個 mexFunction,交給 MATLAB 調用就好了——雖然用 Python 也能寫,MATLAB 調用 Python 更方便,但那得安裝和配置 Python 環境,不太友好。

這年頭自己寫兩行 C 代碼實現這么簡單的功能并不難,但既然有了 GPT,何不偷個懶。于是有了以下對話:

【內心 OS】能行么,還是先試試簡單的

我:我想用 C 語言基于 windows api 實現這樣一個功能,獲得一個桌面上的帶"Figure 1"具體標題的窗口,并將這個窗口最大化,能幫我寫一個代碼嗎?

GPT:要實現這個功能,你可以使用 Windows API 中的 FindWindow 函數來查找窗口,然后使用 ShowWindow 函數來最大化它。下面是一個簡單的示例代碼,演示了如何查找標題為"Figure 1"的窗口并將其最大化:

#include 
#include 

int main() {
    // 查找窗口句柄
    HWND hwnd = FindWindow(NULL, TEXT("Figure 1"));
    if (hwnd == NULL) {
        printf("無法找到窗口
");
        return 1;
    }

    // 最大化窗口
    ShowWindow(hwnd, SW_MAXIMIZE);

    return 0;
}


這段代碼首先嘗試找到標題為"Figure 1"的窗口。如果找到了,就使用 ShowWindow 函數將其最大化。SW_MAXIMIZE 是一個宏,用于指示 ShowWindow 函數將窗口最大化。

請注意,這段代碼假設窗口標題完全匹配"Figure 1"。如果窗口標題包含其他文本,那么你需要修改 FindWindow 函數的第二個參數以匹配實際的窗口標題。

還要注意的是,為了能夠編譯和運行這個程序,你需要在支持 Windows API 的環境中進行,比如使用 Microsoft Visual Studio 或者其他支持 Windows 開發的 IDE。

在運行此代碼之前,請確保你有足夠的權限來操作其他應用程序的窗口,因為某些安全設置可能會阻止你的程序執行這些操作。

【內心 OS】喲,看起來能工作呢,先不編譯運行了,再試試復雜點的

我:謝謝,我想將"Figure 1"作為命令行的輸入參數傳進去,從而讓這個程序可以獲得任何指定標題的窗口并將其最大化,或者最小化。我想讓最大化、最小化也作為輸入參數,可以幫我修改一下程序嗎?

GPT:當然可以。以下是修改后的C語言程序,它接受兩個命令行參數:第一個是窗口標題,第二個是操作類型(最大化或最小化)。

#include #include #include int main(int argc, char *argv[]) { if (argc != 3) { printf("用法: %s <窗口標題> ", argv[0]); return 1; } // 獲取命令行參數 LPCSTR windowTitle = argv[1]; char *operation = argv[2]; // 查找窗口句柄 HWND hwnd = FindWindow(NULL, windowTitle); if (hwnd == NULL) { printf("無法找到窗口: %s ", windowTitle); return 1; } // 根據命令行參數最大化或最小化窗口 if (strcmp(operation, "max") == 0) { ShowWindow(hwnd, SW_MAXIMIZE); } else if (strcmp(operation, "min") == 0) { ShowWindow(hwnd, SW_MINIMIZE); } else { printf("無效操作: %s ", operation); printf("操作必須是 'max' 或 'min' "); return 1; } return 0; }


這個程序首先檢查命令行參數的個數是否正確。如果不正確,它會打印出正確的用法并退出。

然后,它讀取窗口標題和操作類型參數。使用 FindWindow 函數查找窗口,如果找到了,根據操作類型參數調用 ShowWindow 函數以最大化或最小化窗口。

要編譯和運行這個程序,你需要將它保存為 .c 文件,并在支持 Windows API 的環境中進行編譯和運行。例如,在命令行中,你可以這樣運行程序:

your_program.exe "Figure 1" max 或者

your_program.exe "Figure 1" min


上面的 your_program.exe 是編譯后的程序名稱,"Figure 1"是你想要操作的窗口標題, max 和 min 分別表示最大化和最小化窗口的操作。

【內心 OS】太可以了,讓我編譯運行一下

d0bb0366-baa0-11ee-8b88-92fbcf53809c.png

【內心OS】居然零錯誤!

d0bf2d92-baa0-11ee-8b88-92fbcf53809c.png

【內心OS】直接能工作!

【內心 OS】厲害,它能直接給我生成 mexFunction 嗎?試試!

我:你能把這個轉換成 MATLAB 的 mexFunction 實現嗎?

GPT:要將這個功能轉換成 MATLAB 的 mexFunction,你需要使用 MATLAB 的 MEX API 來編寫一個 C 函數,然后在 MATLAB 中編譯它。以下是一個示例代碼,它展示了如何創建一個 mexFunction 來實現相同的功能:

首先,你需要創建一個 C 源文件,例如 window_operations.c,代碼如下:

#include "mex.h" #include #include void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { // 檢查輸入參數數量 if (nrhs != 2) { mexErrMsgIdAndTxt("window_operations:invalidNumInputs", "需要兩個輸入參數:窗口標題和操作類型。"); } // 獲取輸入參數 char *windowTitle = mxArrayToString(prhs[0]); char *operation = mxArrayToString(prhs[1]); if (windowTitle == NULL || operation == NULL) { mexErrMsgIdAndTxt("window_operations:inputConversionFailed", "輸入參數轉換失敗。"); } // 查找窗口句柄 HWND hwnd = FindWindow(NULL, windowTitle); if (hwnd == NULL) { mexErrMsgIdAndTxt("window_operations:windowNotFound", "無法找到窗口: %s", windowTitle); } // 根據輸入參數最大化或最小化窗口 if (strcmp(operation, "max") == 0) { ShowWindow(hwnd, SW_MAXIMIZE); } else if (strcmp(operation, "min") == 0) { ShowWindow(hwnd, SW_MINIMIZE); } else { mexErrMsgIdAndTxt("window_operations:invalidOperation", "無效操作: %s", operation); } // 釋放分配的內存 mxFree(windowTitle); mxFree(operation); }然后,你需要在 MATLAB 中編譯這個源文件。打開 MATLAB,然后在命令窗口中運行以下命令來編譯 window_operations.c:

mex window_operations.c
編譯成功后,你會得到一個名為 window_operations.mexw64(在 64 位 Windows 上)的可執行文件。現在你可以在 MATLAB 中像調用普通函數一樣調用這個 MEX 函數了:
window_operations('Figure 1', 'max');
或者
window_operations('Figure 1', 'min');

這將分別最大化或最小化標題為"Figure 1"的窗口。

請確保在編譯和運行 MEX 文件之前,你的 MATLAB 安裝了支持 C 語言的 MEX 編譯器,并且你有足夠的權限來操作其他應用程序的窗口。

【內心 OS】這都會!不光生成了代碼,還告訴了老朽怎么在 MATLAB 里編譯它,以及怎么調用,太厲害了,跑一下!

>> mex window_operations.c
Building with 'Microsoft Visual C++ 2019 (C)'.
MEX completed successfully.
>> window_operations('MATLAB R2023b', 'max');
>>

一次性成功!連 debug 的機會都不給!

【結語】還能說什么!抓緊用起來,不然失業了!

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • matlab
    +關注

    關注

    185

    文章

    2976

    瀏覽量

    230466
  • 函數
    +關注

    關注

    3

    文章

    4331

    瀏覽量

    62611
  • C代碼
    +關注

    關注

    1

    文章

    89

    瀏覽量

    14300
  • python
    +關注

    關注

    56

    文章

    4797

    瀏覽量

    84683
  • GPT
    GPT
    +關注

    關注

    0

    文章

    354

    瀏覽量

    15372

原文標題:請 GPT 幫我寫個 mexFunction

文章出處:【微信號:MATLAB,微信公眾號:MATLAB】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    請問TC234芯片中的CCU6 , GTM, GPT12中的pwm區別是什么?

    TC234芯片中的CCU6 , GTM(TIM, TOM), GPT12中pwm捕獲與產生的PWM有什么區別?什么時候CCU6, GTM或GPT12的方式捕獲Pwm?什么時候CCU
    發表于 02-05 06:38

    使用TC21x的GPT實現1m計時器執行定時任務,怎么配置GTM和GPT

    專家們好,我想使用TC21x的GPT實現1m計時器執行定時任務,不知道怎么配置GTM和GPT
    發表于 02-06 06:47

    TC275如何設定GPT模塊分頻?

    在illd里沒找到相關函數,請問各位高手如何設定GPT模塊分頻,謝謝。
    發表于 02-22 07:37

    Verilog HDL寫個蜂鳴器小程序

    本帖最后由 starnsky 于 2014-8-8 14:42 編輯 Verilog HDL寫個CPLD的蜂鳴器控制小程序,實現對蜂鳴器響聲次數的控制,向大家求教了!
    發表于 08-08 14:40

    GPT定時器?基本知識詳解

    一、GPT定時器? 以前的延時,通過空指令進行延時,不準確。當修改時鐘頻率后,才延時就會有很大的變動。而6ULL的GPT是一個高精度定時器裝置。? GPT是一個32bit的向上計數器
    發表于 12-07 12:10

    EPIT定時器與GPT定時器簡單介紹

    EPIT定時器與GPT定時器簡單介紹一、EPIT定時器1、EPIT定時器簡介2、EPIT定時器寄存器二、GPT定時器1、GPT定時器簡介2、GPT定時器寄存器cortex-A7擁有2個
    發表于 01-06 07:46

    GPT高精度延時定時器簡介

    Linux NXP (I.MX6ULL) GPT高精度延時定時器0、GPT 定時器簡介1、GPT 定時器特性如下:2、GPT 定時器的可選時鐘源如下圖所示:3、
    發表于 01-12 06:46

    GPT2模塊的相關資料推薦

    定時器 GPT2 模塊這次簡單介紹下GPT2GPT2 模塊框圖**捕捉/重載寄存器 CAPREL 可用來捕捉定時器 T5 的值, 或者重載定時器 T6。 同時, 特殊模式促進兩種功能對寄存器
    發表于 02-22 07:57

    TensorFlow寫個簡單的神經網絡

    這次就用TensorFlow寫個神經網絡,這個神經網絡寫的很簡單,就三種層,輸入層--隱藏層----輸出層;
    的頭像 發表于 03-23 15:37 ?5168次閱讀
    <b class='flag-5'>用</b>TensorFlow<b class='flag-5'>寫個</b>簡單的神經網絡

    GPT系列的“高仿” 最大可達GPT-3大小 自主訓練

    雖然GPT-3沒有開源,卻已經有人在復刻GPT系列的模型了。 例如,慕尼黑工業大學的Connor Leahy,此前200個小時、6000RMB,復現了GPT-2。 又例如,基于150
    的頭像 發表于 02-13 09:24 ?2861次閱讀

    網站總被攻擊?寫個自動封禁IP的腳本給你

    個人網站總被攻擊?寫個自動封禁IP的腳本給你!
    的頭像 發表于 01-29 11:44 ?1118次閱讀

    Python-寫個可轉債分析器

    Python寫個可轉債分析器
    的頭像 發表于 02-16 15:13 ?1318次閱讀
    Python-<b class='flag-5'>寫個</b>可轉債分析器

    GPT/GPT-2/GPT-3/InstructGPT進化之路

    在預訓練階段,GPT 選擇 transformer 的 decoder 部分作為模型的主要模塊,transformer 是 2017年 google 提出的一種特征抽取模型,GPT 以多層 transformer 堆疊的方式構成了整個預訓練模型結構。
    的頭像 發表于 03-03 11:14 ?3759次閱讀

    GPT4搞電機?

    GPT4可以搞電機嗎?
    的頭像 發表于 04-06 10:08 ?1416次閱讀
    <b class='flag-5'>用</b><b class='flag-5'>GPT</b>4搞電機?

    微軟提出Control-GPTGPT-4實現可控文本到圖像生成!

    該研究提出了一個簡單而有效的框架 Control-GPT,它利用 LLM 的強大功能根據文本 prompt 生成草圖。Control-GPT 的工作原理是首先使用 GPT-4 生成 TikZ 代碼形式的草圖。如下圖 1 (c)
    的頭像 發表于 06-05 15:31 ?846次閱讀
    微軟提出Control-<b class='flag-5'>GPT</b>:<b class='flag-5'>用</b><b class='flag-5'>GPT</b>-4實現可控文本到圖像生成!
    主站蜘蛛池模板: 在线黄色免费| 国产精品久久久久久久久免费| 国产精品视频网站你懂得| 国模私拍大尺度视频在线播放| 色香蕉色香蕉在线视频| 黄色毛片免费| 亚洲加勒比在线| 欧美人与zoxxxx视频| 性欧美video视频另类| 色色色色色色色色色色色| china国语对白刺激videos| 国产美女被艹| 亚洲香蕉影视在线播放| 日本黄色片在线观看| 午夜久久网| 日本免费视频| 久久视频免费| 久久久夜夜夜| 性欧美www| 亚洲国产精| 欧美国产日本高清不卡| 噜噜噜久久| 干干人人| 四虎影永久地址www| 国产在线精彩视频二区| 爱操综合| 在线播放你懂| 国产视频一区二| 性xxxfreexxxx性欧美| 色噜噜狠狠网站| 天天插天天射天天干| aaaaaaa欧美黄色大片| 国产卡1卡2卡三卡网站免费| 日本69xxxxxxx69| 亚洲 欧洲 另类 综合 自拍| 成人种子| 欧美色图狠狠干| 国产精品最新资源网| 在线中文字幕一区| 激情文学综合网| 狠狠操91|