BY免费空间去掉?i=1

BY免费空间去掉?i=1 使用说明

支持域名:tae.dpdns.org

前提绑定主机,申请主机–控制面板选择–子域名,绑定xxx.tae.dpdns.org子域名

默认开启DDoS防御,无防火墙规则,建议用.htaccess来防御

默认去掉访问统计?i=1

设置教程:
在这里插入图片描述

例:
https://zzaa.tae.dpdns.org/

申请地址
https://fourm.bolgk.eu.org/

内容概要:本文详细探讨了双馈风力发电机(DFIG)在Simulink环境下的建模方法及其在不同风速条件下的电流与电压波形特征。首先介绍了DFIG的基本原理,即定子直接接入电网,转子通过双向变流器连接电网的特点。接着阐述了Simulink模型的具体搭建步骤,包括风力机模型、传动系统模型、DFIG本体模型和变流器模型的建立。文中强调了变流器控制算法的重要性,特别是在应对风速变化时,通过实时调整转子侧的电压和电流,确保电流和电压波形的良好特性。此外,文章还讨论了模型中的关键技术和挑战,如转子电流环控制策略、低电压穿越性能、直流母线电压脉动等问题,并提供了具体的解决方案和技术细节。最终,通过对故障工况的仿真测试,验证了所建模型的有效性和优越性。 适用人群:从事风力发电研究的技术人员、高校相关专业师生、对电力电子控制系统感兴趣的工程技术人员。 使用场景及目标:适用于希望深入了解DFIG工作原理、掌握Simulink建模技能的研究人员;旨在帮助读者理解DFIG在不同风速条件下的动态响应机制,为优化风力发电系统的控制策略提供理论依据和技术支持。 其他说明:文章不仅提供了详细的理论解释,还附有大量Matlab/Simulink代码片段,便于读者进行实践操作。同时,针对一些常见问题给出了实用的调试技巧,有助于提高仿真的准确性和可靠性。
#include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 #define maxsize 1000 typedef char ElemType; typedef struct { ElemType elem[maxsize]; int last; }SeqList; /*自定义函数说明*/ void InitList(SeqList *L);//初始化顺序表 void CreateFormTail(SeqList *L);//在顺序表中存储各个元素 int Locate(SeqList L,ElemType e);//在顺序表中查找e元素位置 int InsList(SeqList *L,int i,ElemType e);//在顺序表中查第i个元素前插入元素e int DelList(SeqList *L,int i,ElemType *e);//在顺序表中删除第i个元素,并将删除的元素内容通过e带回主函数 void PrintList(SeqList L);//将顺序表中各元素打印输出 bool ListEmpty(SeqList L); /*程序主函数*/ int main() { SeqList L; ElemType e; int temp = -1; int pos = -1; InitList(&L);//初始化顺序表调用 CreateFormTail(&L);//在顺序表中输入大写字母表 PrintList(L);//打印出当前线性表各元素 pos = Locate(L,'F');//在顺序表中查找字符‘F’的位置 printf("F in pos = %d\n",pos);//打印所找字符的逻辑序号 temp = InsList(&L,3,'F');//在顺序表中第三个元素前插入字符‘F’ if(temp == 1) printf("Insert F before i = 3 OK\n");//插入成功打印信息 else printf("Insert Fail\n");//插入失败打印信息 PrintList(L);//打印出插入后当前线性表各元素 DelList(&L,3,&e);//在顺序表中删除第3个元素 printf("Delete i = 3 e = %c\n",e);//打印删除元素信息 PrintList(L);//打印出删除后在当前线性表各元素 return 0; } /*在顺序表中存储各个元素,通过键盘输入元素值,直至读入结束标识符*/ void CreateFormTail(SeqList *L) { int i = 0; char c; int flag = 1;//设置一个标志、初值为1,当输入字符“$”flag为0,建表结束 printf("Creat list,intput A-Z,end by $\n"); while(flag) { c = getchar();//从键盘输入赋值给变量c if(c != '$') { L->elem[i] = c;//将变量c的值赋给结构体中的elem数组 L->last++;//顺序表的长度加一 } else { flag = 0;//输入字符是$,flag置为0,结束 } i++;//数组下标i加1 } } /*初始化顺序表*/ void InitList(SeqList *L) { L->last = 0;//将顺序表的长度初始化为0,表示空表 } /*在顺序表中查找内容为e的元素,如果找到-返回所在逻辑序号,否则未找到返回-1*/ int Locate(SeqList L,ElemType e) { int i = 0;//定义一个变量i赋初值为0 while(i < L.last && L.elem[i] != e)//满足条件i小于顺序表的长度且不等于要查找的元素是,执行循环 i++;//数组下标i自加1 if(i >= L.last) return -1;//历遍完顺序表都没找到元素e,返回-1,表示未找到 else return i + 1;//找到元素e返回逻辑序号 } /*提示:在顺序表中查第i个元素前插入元素e,首先查找顺序表中查第i个元素,如果找到则在该元素之前插入元素e,并提示插入成功-返回OK,否则提示插入失败-返回ERROR*/ int InsList(SeqList *L,int i,ElemType e) { int j; if(i<1||i>L;last+1||L;last==maxsize) return false; i--; for(j=L->length;j>i;j--) L->data[j]=L->data[j-1]; L->data[i]=e; L->length++; return true; } /*提示:在顺序表中删除第i个元素,如果将删除的元素内容通过e带回主函数,提示删除成功-返回OK,否则提示删除失败-返回ERROR*/ int DelList(SeqList *L,int i,ElemType *e) { int j; if(i<1||i>L->length) return false; i--; e=L->data[i]; for(j=i;j<L->length-1;j++) L->data[j]=L->data[j+1]; l->l;length--; return ture; } /*提示:将顺序表中各元素按顺序依次打印输出*/ void PrintList(SeqList L) { for(int i=0;i<L->length;i++) printf("%d",L->data[i]); printf("\n"); }那些代码有错误
03-10
你提供的代码中有几个地方存在语法错误或逻辑问题,下面我会逐一指出这些问题并给出修正建议: ### 错误及修复: 1. **`InsList` 函数中的错误:** ```c int InsList(SeqList *L, int i, ElemType e) { int j; // 这里的条件表达式有错别字和多余的分号 if (i < 1 || i > L->last + 1 || L->last == maxsize) return ERROR; i--; // 因为用户传入的i是基于1开始计数的 // 移动数据以腾出空间给新元素 for (j = L->last; j >= i; --j) L->elem[j + 1] = L->elem[j]; L->elem[i] = e; ++(L->last); // 更新最后一个有效元素的位置 return OK; } ``` 主要是改正了判断条件、去掉了不必要的分号以及正确的处理插入操作。 2. **`DelList` 函数中的错误:** ```c int DelList(SeqList *L, int i, ElemType *e) { if (i < 1 || i > L->last + 1) return ERROR; i--; *e = L->elem[i]; // 获取要删除的元素值 for (; i < L->last - 1; ++i) L->elem[i] = L->elem[i + 1]; --(L->last); return OK; } ``` 纠正了一些拼写错误如 `ture` -> `true`, 并且确保删除后的数组元素能正确向前移位。 3. **`PrintList` 函数中的错误:** ```c void PrintList(SeqList L) { for (int i = 0; i <= L.last; ++i) printf("%c ", L.elem[i]); printf("\n"); } ``` 增加了一个空格使得每个字符间更易区分,并修改循环终止条件为 `<=` 来包含所有的元素(假设 `last` 表示的是最后一位非空槽位)。同时注意到这里的 `%d` 已经改为 `%c` 因为你保存的是字符类型的元素 (`ElemType`)。 4. **其他潜在改进点:** a. `Locate()` 函数返回的结果应当直接反映逻辑编号而非物理地址。因此应该保持现有的 `return i + 1`. b. 避免在函数体内使用全局宏定义的最大尺寸限制 (`maxsize`). 最好是在创建列表实例时设定合理的初始容量并且动态管理内存分配。 以下是完整的修订版代码片段: ```c #include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 #define MAXSIZE 1000 typedef char ElemType; typedef struct SeqList_t { ElemType elem[MAXSIZE]; int last; /* The index of the latest element */ } SeqList; // Function declarations omitted... /* Insert an element before position i */ int InsList(SeqList *L, int i, ElemType e) { int j; if (i < 1 || i > L->last + 1 || L->last == MAXSIZE) return ERROR; i--; for (j = L->last; j >= i; --j) L->elem[j + 1] = L->elem[j]; L->elem[i] = e; ++(L->last); return OK; } /* Delete element at position i and set its value to e */ int DelList(SeqList *L, int i, ElemType *e) { if (i < 1 || i > L->last + 1) return ERROR; i--; *e = L->elem[i]; while (++i <= L->last) L->elem[i-1] = L->elem[i]; --(L->last); return OK; } /* Print all elements in sequence list */ void PrintList(const SeqList L) { for (int i = 0; i <= L.last; ++i) printf("%c ", L.elem[i]); printf("\n"); } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云博客-资源宝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值